js String 标准方法

  • string.charAt(pos)

    charAt方法返回在string中pos位置的字符。如果pos小于0或者大于等于字符串的长度string.length,它会返回空字符串。javascript没有字符类型(character type)。这个方法返回的结果是一个字符串:

var name = 'Curly';
var initial = name.charAt(0);    // initial='C';

charAt可以像这样实现:

String.method('chatAt', function(pos){
    return this.slice(pos, pos + 1);
});

  • string.charCodeAt(pos)

    charCodeAt方法同charAt一样,只不过它返回的不是一个字符串,而是以整数形式表示的在string中的pos位置处的字符的字符码位。如果pos小于0或大于等于字符串的长度string.length,它返回NaN。

var name = 'Curly';
var initial = name.charCodeAt(0);   //initial = 67;
  • string.concat(string...)

concat方法把其他的字符串连接在一起来构造一个新的字符串。它很少被使用,因为用+运算符更为方便:

var s = 'C'.concat('a', 't'); //s = 'Cat';
  • string.indexOf(searchString, position)

indexOf方法在string内查找一个字符串searchString。如果它被找到,返回第1个匹配字符的位置,否则返回-1。可选参数position可设置从string的某个指定的位置开始查找:

var text = 'Mississippi';
var p = text.indexOf('ss'); //p = 2;
p = text.indexOf('ss', 3);  //p = 5;
p = text.indexOf('ss', 6);  //p = -1;
  • string.lastIndexOf(searchString, position)

    lastIndexOf方法和indexOf方法类似,只不过它是从该字符串的末尾开始查找而不是从开头:

var text = 'Mississippi';
var p = text.lastIndexOf('ss'); //p = 5;
p = text.lastIndexOf('ss', 3);  //p = 2;
p = text.lastIndexOf('ss', 6);  //p = 5;
  • string.localCompare(that)

    localCompare方法比较两个字符串。如何比较字符串的规则没有详细说明。如果string比字符串that小,那么结果为负数。如果它们是相等的,那么结果为0。这类似于array.sort比较函数的约定:

var m = ['AAA', 'A', 'aa', 'a', 'Aa', 'aaa'];
m.sort(function (a, b) {
    return a.localeCompare(b);
});
//m = ['a', 'A', 'aa', 'Aa', 'aaa', 'AAA'];(某些local设置下)
  • string.match(regexp)

match方法让字符串和一个正则表达式进行匹配。它依据g标识来决定如何进行匹配。如果没有g标识,那么调用string.match(regexp)的结果与调用regexp.exec(string)的结果相同。然而,如果regexp带有g标识,那么它生成一个包含所有匹配(除捕获分组之外)的数组:

var text = '<html><body bgcolor=linen><p>' + 'This is <b>bold<\/b>!<\/p><\/body><\/html>';
var tags = /[^<>]+|<(\/?)([A-Za-z]+)([^<>]*)>/g;
var a, i;
a = text.match(tags);
for (i = 0; i < a.length; i+=1) {
    console.log(a[i]);
}

//结果:
//<html>
//<body bgcolor=linen>
//<p>
//This is 
//<b>
//bold
//</b>
//!
//</p>
//</body>
//</html>
  • string.replace(searchValue, replaceValue)

    replace方法对string进行查找的替换操作,并返回一个新的字符串。参数searchValue可以是一个字符串或一个正则表达式对象。如果它是一个字符串,那么searchValue只会在第1次出现的地方被替换,所以下面的代码结果是"mother-in_law":

var result = "mother_in_law".replace('_', '-');

    这或许令你失望。

扫描二维码关注公众号,回复: 1488185 查看本文章

    如果searchValue是一个正则表达式并且有g标识,它会替换所有的匹配。如果没有带g标识,它会仅替换第1个匹配。

    replaceValue可以是一个字符串或一个函数。如果replaceValue是一个字符串,字符$拥有特别的含义:

//捕获括号中的3个数字
var oldareacode = /\((\d{3})\)/g;
var p = '(555)666-1212'.replace(oldareacode, '$1-');
//p = '555-666-1212';
 美元符号序列  替换对象
 $$  $
 $&  整个匹配的文本
 $number  分组捕获的文本
 $`  匹配之前的文本
 $'  匹配之后的文本
如果replaceValue是一个函数,那么每遇到一次匹配函数就会被调用一次,而该函数返回的字符串会被用做替换文本。传递给这个函数的第1个参数是整个被匹配的文本,第2个参数是分组1捕获的文本,再下一个参数是分组2捕获的文本,依此类推:
String.method('entityify', function () {
    var character = {
        '<': '<',
        '>': '>',
        '&': '&',
        '"': '"'
    };
    //返回String.entityify方法,它返回调用替换方法的结果。
    //它的replaceValue函数返回在一个对象中查找一个字符的结果。
    //这种对象的用法通常优于switch语句。
    return function () {
        return this.replace(/[<>&"]/g, function (c) {
            return character[c];
        });
    };
}());
console.log("<&>".entityify());     //<&>
  • string.search(regexp)

    search方法和indexOf方法类似,只是它接受一个正则表达式对象作为参数而不是一个字符串。如果找到匹配,它返回第1个匹配的首字符位置,如果没有找到匹配,则返回-1。此方法会忽略g标识,且没有position参数:

var text = 'and in it he says "Any damn fool could';
var pos = text.search(/["']/);
//pos = 18;
  • string.slice(start ,end)

    slice方法复制string的一部分来构造一个新的字符串。如果start参数是负数,它将与string.length相加。end参数是可选的,且默认值是string.length。如果end参数是负数,那么它将与string.length相加。end参数等于你要取的最后一个字符的位置值加上1 。要想得到从位置p开始的n个字符,就用string.slice(p ,p + n)。

var text = 'and in it he says "Any damn fool could';
var a = text.slice(18);
//a = '"Any damn fool could';
var b = text.slice(0, 3);
//b = 'and';
var c = text.slice(-5);
//c = 'could';
var d = text.slice(19, 32);
//d = 'Any damn fool';
  • string.split(separator, limit)

    split方法把这个string分割成片段来创建一个字符串数组。可选参数limit可以限制被分割的片段数量。separator参数可以是一个字符串或一个正则表达式。

    如果separator是一个空字符,它会返回一个单字符的数组:

var digits = '0123456789';
var a = digits.split('', 5);
//a = ['0', '1', '2', '3', '4'];

    否则,此方法会在string中查找所有separator出现的地方。分隔符两边的每个单元文本都会被复制到该数组中。此方法会忽略标识:

var ip = '192.168.1.0';
var b = ip.split('.');
//b = ['192', '168', '1', '0'];
var c = 'a|b|c'.split('|');
//c = ['', 'a', 'b', 'c', ''];
var text = 'last, first, middle';
var d = text.split(/\s*,\s*/);
//d = ['last', 'first', 'middle'];

    有一些特例须特别注意。来自分组捕获的文本会被包含在被分割后的数组中:

var text = 'last, first, middle';
var e = text.split(/\s*(,)\s*/);
//e = ['last', ',', 'first', ',', 'middle'];
    当separator是一个正则表达式时,有一些javascript的实现在输出数组中会排除掉空字符中:( 只有IE8及之前版本的IE浏览器会在输出的数组结果中排除空字符串,IE9已经修复了这个问题
ar f = '|a|b|c|'.split('|');
//在一些系统中,f = ['', 'a', 'b', 'c', ''];
//在另外一些系统中,f = ['a', 'b', 'c'];
  • string.substring(start, end)

    substring的用法和slice方法一样,只不过它不能处理负数参数。没有任何理由去使用substring方法。请用slice替代它。

  • string.toLocalLowerCase()

    toLocalLowerCase方法返回一个新的字符串,它使用本地化的规则把这个string中的所有字母转换为小写格式。这个方法主要用在土耳其语上,因为土耳其语中‘I’转换为‘I’,而不是‘i’。

  • string.toLocalUpperCase()

    toLocalUpperCase方法返回一个新的字符串,它使用本地化的规则把这个string中的所有字母转换为大写格式。这个方法主要用在土耳其语上,因为土耳其语中‘i’转换为‘İ’,而不是‘I’。

  • string.toLowerCase()

    toLowerCase方法返回一个新的字符串,这个string中的所有字母都被转换为小写格式。

  • string.toUpperCase()

    toUpperCase方法返回一个新的字符串,这个string中的所有字母都被转换为大写格式。

  • string.fromCharCode(char...)

String.fromCharCode函数根据一串数字编码返回一个字符串。

vvar a= String.fromCharCode(67, 97, 116);
//a = 'Cat';

※摘抄自《JavaScript语言精粹(修订版)》


猜你喜欢

转载自blog.csdn.net/baidu_24563939/article/details/80519413