JavaScript 系列之字符串(三)

401 阅读3分钟

这是我参与8月更文挑战的第25天,活动详情查看:8月更文挑战

三、修改转换

3.1 split

split() 方法使用指定的分隔符字符串将一个 String 对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置。

str.split([separator[, limit]])

  • @params
    • separator:指定表示每个拆分应发生的点的字符串。separator 可以是一个字符串或正则表达式。如果分隔符为空字符串,则将str原字符串中每个字符的数组形式返回。
    • limit (可选):一个整数,限定返回的分割片段数量。
  • @return: 返回源字符串以分隔符出现位置分隔而成的一个 Array。
  • 是否改变原字符串:不改变
let color = 'red,blue,yellow,black';
let color1 = color.split(',');      // =>['red','blue','yellow','black']
let color2 = color.split(',',2);    // =>['red','blue']
let color3 = color.split(/[^\,]+/); // =>['', ',', ',', ',', '']

最后一个调用 split 的时候,出现了前后的两个空白,是因为通过正则表达式指定的分隔符出现在了字符串的开头和结尾。

3.2 toLowerCase

toLowerCase() 会将调用该方法的字符串值转为小写形式,并返回。

3.3 toUpperCase

toUpperCase() 方法将调用该方法的字符串转为大写形式并返回(如果调用该方法的值不是字符串类型会被强制转换)。

四、空白字符

4.1 trim

trim() 方法会从一个字符串的两端删除空白字符。在这个上下文中的空白字符是所有的空白字符 (space, tab, no-break space 等) 以及所有行终止符字符(如 LF,CR等)。

str.trim()

  • @params
  • @return: 一个代表调用字符串两端去掉空白的新字符串。
  • 是否改变原字符串:不改变
let orig = '   foo  ';
console.log(orig.trim()); // 'foo'

let orig = 'foo    ';
console.log(orig.trim()); // 'foo'

4.2 trimStart

trimStart() 方法从字符串的开头删除空格。trimLeft() 是此方法的别名。

str.trimStart();

  • @params
  • @return: 一个新字符串,表示从其开头(左端)除去空格的调用字符串。
  • 是否改变原字符串:不改变
let str = "   foo  ";
console.log(str.length); // 8

str = str.trimStart()    // 等同于 str = str.trimLeft();
console.log(str.length); // 5
console.log(str);        // "foo  "

4.3 trimRight

trimEnd() 方法从一个字符串的末端移除空白字符。trimRight() 是这个方法的别名。

str.trimEnd();

  • @params
  • @return: 一个新字符串,表示从调用字串的末(右)端除去空白。
  • 是否改变原字符串:不改变
let str = "   foo  ";
console.log(str.length); // 8

str = str.trimRight();  // 或写成str = str.trimEnd();
console.log(str.length); // 6
console.log(str);       // '   foo'

五、正则表达

5.1 match

match() 方法检索返回一个字符串匹配正则表达式的结果。

str.match(regexp)

  • @params:一个正则表达式对象。
  • @return
    • 如果使用g标志,则将返回与完整正则表达式匹配的所有结果,但不会返回捕获组。
    • 如果未使用g标志,则仅返回第一个完整匹配及其相关的捕获组(Array)。 在这种情况下,返回的项目将具有如下所述的其他属性。
  • 是否改变原字符串:不改变
const paragraph = 'The quick brown fox jumps over the lazy dog. It barked.';
const regex = /[A-Z]/g;
const found = paragraph.match(regex);

console.log(found);
// expected output: Array ["T", "I"]

5.2 matchAll

matchAll() 方法返回一个包含所有匹配正则表达式的结果及分组捕获组的迭代器。

str.matchAll(regexp)

  • @params:一个正则表达式对象。
  • @return: 一个迭代器。
  • 是否改变原字符串:不改变
const regexp = /t(e)(st(\d?))/g;
const str = 'test1test2';
const array = [...str.matchAll(regexp)];

console.log(array[0]);
// expected output: Array ["test1", "e", "st1", "1"]
console.log(array[1]);
// expected output: Array ["test2", "e", "st2", "2"]

5.3 search

search() 方法执行正则表达式和 String 对象之间的一个搜索匹配。

str.search(regexp)

  • @params:一个正则表达式对象。
  • @return: 如果匹配成功,则 search() 返回正则表达式在字符串中首次匹配项的索引;否则,返回 -1。
  • 是否改变原字符串:不改变
const paragraph = 'The quick brown fox jumps over the lazy dog. If the dog barked, was it really lazy?';

// any character that is not a word character or whitespace
const regex = /[^\w\s]/g;

console.log(paragraph.search(regex));
// expected output: 43

console.log(paragraph[paragraph.search(regex)]);
// expected output: "."