js中String常用方法详解以及String对象方法扩展

一、JavaScript 中 slice 、substr 和 substring的区别:

1: String.slice(start,end): 一个新的字符串。包括字符串 stringObject 从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符.

2: String.substring(start,end) 这个就有点特别了,它是先从start,end里找出一个较小的值. 然后从字符串的开始位置算起,截取较小值位置和较大值位置之间的

字符串,截取出来的字符串的长度为较大值与较小值之间的差。
一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符,其长度为 stop 减 start。

3: String.substr(start,end) 这个就是我们常用的从指定的位置(start)截取指定长度(end)的字符串.
一个新的字符串,包含从 stringObject 的 start(包括 start 所指的字符) 处开始的 lenght 个字符。如果没有指定 lenght,那么返回的字符串包含从 start
到 stringObject 的结尾的字符。
String 对象的方法 slice()、substring() 和 substr() (不建议使用)都可返回字符串的指定部分。slice() 比 substring() 要灵活一些,因为它允许使用负数作为参数。slice() 与 substr() 有所不同,因为它用两个字符的位置来指定子串,而 substr() 则用字符位置和长度来指定子串。'

二、String对象中常用的方法:

1、charCodeAt方法返回一个整数,代表指定位置字符的Unicode编码。
strObj.charCodeAt(index)
说明:
index将被处理字符的从零开始计数的编号。有效值为0到字符串长度减1的数字。
如果指定位置没有字符,将返回NaN。
例如:
var str = "ABC";
str.charCodeAt(0);
结果:65
2、fromCharCode方法从一些Unicode字符串中返回一个字符串。
String.fromCharCode([code1[,code2...]])
说明:
code1,code2...是要转换为字符串的Unicode字符串序列。如果没有参数,结果为空字符串。
例如:
String.fromCharCode(65,66,112);
结果:ABp
3、charAt方法返回指定索引位置处的字符。如果超出有效范围的索引值返回空字符串。
strObj.charAt(index)
说明:
index想得到的字符的基于零的索引。有效值是0与字符串长度减一之间的值。
例如:
var str = "ABC";
str.charAt(1);
结果:B
4、slice方法返回字符串的片段。
strObj.slice(start[,end])
说明:
start下标从0开始的strObj指定部分其实索引。如果start为负,将它作为length+start处理,此处length为字符串的长度。
end小标从0开始的strObj指定部分结束索引。如果end为负,将它作为length+end处理,此处length为字符串的长度。
例如:
012345
var str = "ABCDEF";
str.slice(2,4);
结果:CD
5、substring方法返回位于String对象中指定位置的子字符串。
strObj.substring(start,end)
说明:
start指明子字符串的起始位置,该索引从0开始起算。
end指明子字符串的结束位置,该索引从0开始起算。
substring方法使用start和end两者中的较小值作为子字符串的起始点。如果start或end为NaN或者为负数,那么将其替换为0。
例如:
012345
var str = "ABCDEF";
str.substring(2,4); // 或 str.substring(4,2);
结果:CD
6、substr方法返回一个从指定位置开始的指定长度的子字符串。
strObj.substr(start[,length])
说明:
start所需的子字符串的起始位置。字符串中的第一个字符的索引为0。
length在返回的子字符串中应包括的字符个数。
例如:
012345
var str = "ABCDEF";
str.substr(2,4);
结果:CDEF
7、indexOf方法返回String对象内第一次出现子字符串位置。如果没有找到子字符串,则返回-1。
strObj.indexOf(substr[,startIndex])
说明:
substr要在String对象中查找的子字符串。
startIndex该整数值指出在String对象内开始查找的索引。如果省略,则从字符串的开始处查找。
例如:
01234567
var str = "ABCDECDF";
str.indexOf("CD",1); // 由1位置从左向右查找 123...
结果:2
8、lastIndexOf方法返回String对象中字符串最后出现的位置。如果没有匹配到子字符串,则返回-1。
strObj.lastIndexOf(substr[,startindex])
说明:
substr要在String对象内查找的子字符串。
startindex该整数值指出在String对象内进行查找的开始索引位置。如果省略,则查找从字符串的末尾开始。
例如:
01234567
var str = "ABCDECDF";
str.lastIndexOf("CD",6); // 由6位置从右向左查找 ...456
结果:5
9、search方法返回与正则表达式查找内容匹配的第一个字符串的位置。
strObj.search(reExp)
说明:
reExp包含正则表达式模式和可用标志的正则表达式对象。
例如:
var str = "ABCDECDF";
str.search("CD"); // 或 str.search(/CD/i);
结果:2
10、concat方法返回字符串值,该值包含了两个或多个提供的字符串的连接。
str.concat([string1[,string2...]])
说明:
string1,string2要和所有其他指定的字符串进行连接的String对象或文字。
例如:
var str = "ABCDEF";
str.concat("ABCDEF","ABC");
结果:ABCDEFABCDEFABC
11、将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
strObj.split([separator[,limit]])
说明:
separator字符串或 正则表达式 对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。
limit该值用来限制返回数组中的元素个数。
例如:
var str = "AA BB CC DD EE FF";
alert(str.split(" ",3));
结果:
AA,BB,CC
12、toLowerCase方法返回一个字符串,该字符串中的字母被转换成小写。
例如:
var str = "ABCabc";
str.toLowerCase();
结果:abcabc
13、toUpperCase方法返回一个字符串,该字符串中的所有字母都被转换为大写字母。
例如:
var str = "ABCabc";
str.toUpperCase();

结果:ABCABC

虽然js String对象已经提供像slice、replace、indexOf和substring等方法,但在实际项目应用中会对其进行扩展,以达到实用、方便目的。注释很详细,废话少说,代码如下:

三、String对象方法扩展:
/**
*字符串-格式化
*/
String.prototype.format = function(){
var args = arguments;//获取函数传递参数数组,以便在replace回调函数内使用
var regex = /\{(\d+)\}/g;//匹配并捕获所有 形如:{数字} 字串
return this.replace(regex,function(m,i){//参数=匹配子串+第几次匹配+匹配字串位置+源字符串
return args[i];
});
}
/**
*字符串-去掉前后空白字符
*/
String.prototype.trim = function(){
return this.replace(/(^\s*)|(\s*$)/g, "");
}
/**
*字符串-去掉前空白字符
*/
String.prototype.ltrim = function(){
return this.replace(/(^\s*)/g, "");
}
/**
*字符串-去掉后空白字符
*/
String.prototype.rtrim = function(){
return this.replace(/(\s*$)/g, "");
}
/**
*字符串-获取以ASCII编码字节数 英文占1字节 中文占2字节
*/
String.prototype.lenASCII=function(){
return this.replace(/[^\x00-\xff]/g,'xx').length;//将所有非\x00-\xff字符换为xx两个字符,再计算字符串
}
/**
*字符串-获取以UNICODE编码字节数 一个字符均占2个字节
*/
String.prototype.lenUNICODE=function(){
return this.length*2;
}
ps:若对js提供类型对象或自定义对象进行方法扩展,应利用原型prototype这个对象属性进行扩展,具体方式以下:

String.prototype.trim=function(){
//...代码略
};
String.prototype.ltrim=function(){
//...代码略
};

分类:默认分类 时间:2012-01-08 人气:2
本文关键词:
分享到:

相关文章

  • 各种基本类型与string的转换 2012-02-06

    基于C++11标准 如果你用的编译器是基于最新的C++11标准,那么这个问题就变的很简单,因为中已经封装好了对应的转换方法: 标准库中定义了to_string(val);可以将其它类型转换为string。还定义了一组stoi(s,p,b)、stol(s,p,b)、stod(s,p,b)等函数,可以函数,可以分别转化成int、long、double等. VS2013下编译通过 void testTypeConvert() { //int --> string int i = 5; strin

  • string中Insert与Format效率对比.String与List中Contains与IndexOf的效率对比 2012-08-14

      关于string的效率,众所周知的恐怕是“+”和StringBuilder了,这些本文就不在赘述了。关于本文,请先回答以下问题(假设都是基于多次循环反复调用的情况下): 1.使用Insert与Format方法,哪个效率更高? 2.Contains(value)与IndexOf(value)谁效率更高? 假如您对此2问不感兴趣或已非常了解,请忽略此文。另外本文将不对文中代码的实际用途做任何解释。 <一> 首先看以下的使用场景 string str1 = "abc"; string

  • String 值传递or引用传递 2013-01-31

    其实,要是在之前,我会很肯定的回答String是引用传递,但是今晚一个例子,也可以说是自己忘了一些String的知识点,如需复习一下String的可以,看一下我之前的一篇博客用好字符串,提防陷阱 好吧,我简单列一下我遇到的情况 public class Test { public static void main(String[] args) throws IOException { String str = "string"; append(str); System.out.println("

  • 深刻理解Java中final的作用(一):从final的作用剖析String被设计成不可变类的深层原因 2013-02-21

    声明:本博客为原创博客,未经允许,不得转载!小伙伴们如果是在别的地方看到的话,建议还是来csdn上看吧(原文链接为http://blog.csdn.net/bettarwang/article/details/26744661),看代码和提问、讨论都更方便。 Java中final的作用主要表现在三方面:修饰变量、修饰方法和修饰类。下面就从这两个方面来讲解final的作用。在文末从final及类的设计安全性出发,论述了Java中String为何要被设计成不可变类。 1.final修饰变量 fina

  • 再解Java中的String 2013-02-23

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 今天朋友问我String的内容是真的不可变吗?我肯定告诉他是的?因为在我的主观意识里String就是一个不可变的对象。于是他给我发了这段程序: publi

  • string基本字符系列容器(一) 2013-03-08

    C++STL提供了string基本字符系列容器来处理字符串,可以把string理解成字符串类,它提供了添加,删除,替换,查找和比较等丰富的方法。 使用string容器,需要头文件包含声明#include。 创建string对象 创建一个字符串对象s,s是一个空字符串,长度为0. #include #include using namespace std; int main() { string s; cout 给string对象赋值 (1)直接给字符串对象赋值 #include #include

  • Codeforces 196 D. The Next Good String 2013-04-07

    D. The Next Good String time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output In problems on strings one often has to find a string with some particular properties. The problem authors were relu

  • 如何将String类型转换成任意基本类型 2013-05-09

    前几天,在写一个自动从XML中读取数值并注入到对象属性中去的时候,为了方便,不想把原来是int类型的写与string类型,但是从XML里读取出来的时候,都是string类型。这时就需要将string类型自动地根据对象属性的类型转换过来。 比如string ==> int/long/double/DateTime/enum/String/bool.... 刚开始的时候,确实有点犯傻,来个长长的switch。 但是突然间想到,在使用asp.net mvc的时候,它们不是也把从表单或URL中传上

  • first unique character in a string 2013-07-29

    题目:给定一个string,找出第一个string里的unique character,如“cisco”的话就应该是i,“cat”的话就是c。 第一种方法是用LinkedHashMap保留数据的顺序,过一遍string,对字符进行计数,然后找到第一个数量为1的字符即可。 第二种方法是用一个HashSet来存已经重复的字符,然后用个arraylist来存仅出现了一次的字符。 第三种方法是用HashMap来存数据以及count,然后再走一遍string,对每个字符检查计数是否为1. 代码: impo

Copyright (C) quwantang.com, All Rights Reserved.

趣玩堂 版权所有 京ICP备15002868号

processed in 0.068 (s). 10 q(s)