理顺 JavaScript (5) - 符合 ECMAScript 标准的字符串函数


这包括:

charAt

charCodeAt

concat

fromCharCode  //String 类中的唯一静态函数

indexOf

lastIndexOf

length        //String 类中的唯一的属性

localeCompare

slice

substr

substring

toUpperCase

toLowerCase

toLocaleUpperCase

toLocaleLowerCase

split

toString

valueOf



//下面三个函数和正则表达式密切相关, 到正则再说:

match

replace

search



//下面六个编码解码的函数是全局函数, 不属于 String 类:

escape

unescape

encodeURI

decodeURI

encodeURIComponent

decodeURIComponent



//ECMAScript 标准不再支持的字符串函数:

anchor、big、blink、bold、fixed、fontcolor、fontsize、italics、link、small、strike、sub、sup


 
   

charAt : 返回第几个字符

var str = 'ABCD';

alert(str.charAt(2)); //C



var str = new String('万一的 Delphi 博客');

alert(str.charAt(2)); //的


 
   

charCodeAt : 返回第几个字符的编码

var str = 'ABCD';

alert(str.charCodeAt(2)); //67



var str = new String('万一的 Delphi 博客');

alert(str.charCodeAt(2)); //30340


 
   

concat : 连接字符串

var s1, s2, s3, str;

s1 = '万一的'; s2 = ' Delphi '; s3 = '博客';

str = '这里是: ';

str = str.concat(s1, s2, s3);

alert(str); //这里是: 万一的 Delphi 博客


 
   

fromCharCode : 从字符编码创建一个字符串; 注意这是 String 类的静态方法, 不被对象支持, 要通过 String 类名调用; String 的静态方法只有这一个, 其他都不能这样使用.

var str;

str = String.fromCharCode(65, 66, 67, 68);

alert(str); //ABCD 



str = String.fromCharCode(19975);

alert(str); //万



str = String.fromCharCode(19975,19968,30340,32,68,101,108,112,104,105,32,21338,23458);

alert(str); //万一的 Delphi 博客


 
   

indexOf : 返回子串首次出现的位置, 找不到返回 -1

var str = '万一的 Delphi 博客';

alert(str.indexOf('万'));     //0

alert(str.indexOf('D'));      //4

alert(str.indexOf('Delphi')); //4

alert(str.indexOf('delphi')); //-1


 
   

lastIndexOf : 返回子串最后出现的位置(从后向前找), 找不到返回 -1

var str = 'ABCABC';

alert(str.lastIndexOf('A'));   //3

alert(str.lastIndexOf('C'));   //5

alert(str.lastIndexOf('CAB')); //2

alert(str.lastIndexOf('cab')); //-1


 
   

length : 返回字符串长度, 它是 String 类中的唯一属性, 还是只读属性

var str = 'AB'; 

alert(str.length); //2

str = '万一'; 

alert(str.length); //2



alert('万一的 Delphi 博客'.length); //13


 
   

localeCompare : 比较字符串

var s1 = 'A', s2 = 'D';

alert(s1.localeCompare(s2)); //-1

alert(s2.localeCompare(s1)); //1



alert('Delphi'.localeCompare('Delphi')); //0

alert('Delphi'.localeCompare('delphi')); //1


 
   

slice : 截取字符串; 参数为负就倒数; 第二个参数默认到尾

var str = 'ABCDEFG';

alert(str.slice(1, 4));   //BCD

alert(str.slice(1));      //BCDEFG

alert(str.slice(1, -1));  //BCDEF

alert(str.slice(-3, -1)); //EF


 
   

substr、substring : 和 slice 类似, 它们都是提取字符串;
substr(起点位置, 长度);
substring(起点位置, 终点位置);
substring 和 slice 更相似, 但 substring 不使用负数参数.

var str = '123456', s1, s2;



s1 = str.substr(1, 4);

s2 = str.substring(1, 4);

alert(s1 + '; ' + s2);    //2345; 234



s1 = str.substr(4, 1);

s2 = str.substring(4, 1);

alert(s1 + '; ' + s2);    //5; 234



/*和 slice 不一样, substr 与 substring 最好都不用负数*/

s1 = str.substr(-2, 2);    //同 substr(0, 2)

s2 = str.substring(-2, 2); //同 substring(0, 2)

alert(s1 + '; ' + s2);     //12; 12



s1 = str.substr(0, 2);

s2 = str.substring(0, 2);

alert(s1 + '; ' + s2);     //12; 12



s1 = str.substr(1, 2);

s2 = str.substring(1, 2);

alert(s1 + '; ' + s2);     //23; 2



/*如果省略了第二个参数, substr 与 substring 是一样的*/

s1 = str.substr(2);

s2 = str.substring(2);

alert(s1 + '; ' + s2);     //3456; 3456


 
   

toUpperCase、toLowerCase、toLocaleUpperCase、toLocaleLowerCase : 大小写转换

var str = 'Delphi';

alert(str.toUpperCase());       //DELPHI

alert(str.toLowerCase());       //delphi

alert(str.toLocaleUpperCase()); //DELPHI

alert(str.toLocaleLowerCase()); //delphi


 
   

split : 分割字符串

var str, arr;

str = 'Delphi/C++/JavaScript'

arr = str.split('/'); //将返回 ['Delphi', 'C++', 'JavaScript']

alert(arr[0]); //Delphi



/*可以限制返回数组的维数*/

arr = str.split('/', 2); //将返回 ['Delphi', 'C++']

alert(arr[1]); //C++

alert(arr[2]); //undefined (表示不存在)



/*用空格分割*/

str = 'Delphi 2009';

arr = str.split(' '); //将返回 ['Delphi', '2009']

alert(arr[1]); //2009



/*假如用空串分割*/

str = 'Delphi';

arr = str.split(''); //将返回 ['D', 'e', 'l', 'p', 'h', 'i']

alert(arr[1]); //e



/*最有意思的是它可以用正则表达式分割, 其实上个例子就是正则的理念了, 这会专题学习*/

str = 'A1B2C3D4';

arr = str.split(/\d/); //将返回 ['A', 'B', 'C', 'D']

alert(arr[1]); //B


 
   

toString、valueOf : 这两个函数用于字符串时还是返回字符串本身, 没有实用价值

var str = 'Delphi';

alert(str.toString()); //Delphi

alert(str.valueOf());  //Delphi


 
   

escape、unescape : 编码、解码; 它们(包括之后的函数)是全局函数, 不属于 String 类

var str;

str = escape('万一的 Delphi 博客');

alert(str);          //%u4E07%u4E00%u7684%20Delphi%20%u535A%u5BA2

str = unescape(str);

alert(str);          //万一的 Delphi 博客


 
   

encodeURI、decodeURI、encodeURIComponent、decodeURIComponent : 选择编码、解码;
encodeURI 对非 ASCII 字符编码;
encodeURIComponent 和 encodeURI 类似, 但也给 ASCII 中的特殊字符编码.

var str = 'http://del.cnblogs.com?x=万一';



str = encodeURI(str);

alert(str);  //http://del.cnblogs.com?x=%E4%B8%87%E4%B8%80

str = decodeURI(str);

alert(str);  //http://del.cnblogs.com?x=万一



str = encodeURIComponent(str);

alert(str); //http%3A%2F%2Fdel.cnblogs.com%3Fx%3D%E4%B8%87%E4%B8%80

str = decodeURIComponent(str);

alert(str); //http://del.cnblogs.com?x=万一
 
   

你可能感兴趣的:(JavaScript)