首页 > 编程语言 > 详细

JavaScript 字符串常用操作

时间:2021-02-15 09:46:08      阅读:18      评论:0      收藏:0      [点我收藏+]

检索

charAt-获取指定位置字符

var str="abc"
console.log(str.charAt(0))//a

charCodeAt-获取指定位置 unicode

var str="abc"
console.log(str.charCodeAt(1))//98

at-获取指定位置字符

es6 at方法可以识别Unicode 编号大于0xFFFF的字符,返回正确的字符。

‘abc‘.at(0)//"a"
‘吉‘.at(0)//"吉"

test-匹配正则

/\d{6}/.test("123456"))	//true

indexOf-获取字符串索引

var str="Hello world!"
console.log(str.indexOf("Hello"))//0
console.log(str.indexOf("World"))//-1
console.log(str.indexOf("world"))///6

search-获取正则匹配索引

search() 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。要执行忽略大小写的检索,请追加标志 i。如果没有找到任何匹配的子串,则返回 -1。

var str="abc DEF!"
console.log(str.search(/DEF/))//4

match-获取正则匹配索引

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。

var str="1 abc 2 def 3"
console.log(str.match(/\d+/g))//【1,2,3】

includes、startsWith、endsWith-es6

let s = ‘Hello world!‘;    
s.startsWith(‘Hello‘) // true
s.endsWith(‘!‘) // true
s.includes(‘o‘) // true

这三个方法都支持第二个参数,表示开始搜索的位置。

let s = ‘Hello world!‘;    
s.startsWith(‘world‘, 6) // true
s.endsWith(‘Hello‘, 5) // true
s.includes(‘Hello‘, 6) // false

上面代码表示,使用第二个参数n时,endsWith的行为与其他两个方法有所不同。它针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束。

replace-替换

replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

var str="abc Def!"
console.log(str.replace(/abc/, "CBA"))//CBA Def!

split-分割

把字符串分割为字符串数组。

var str="abc def ghi jkl"    
console.log(str.split(" "))//["abc", "def", "ghi", "jkl"]
console.log(str.split("") )//["a", "b", "c", " ", "d", "e", "f", " ", "g", "h", "i", " ", "j", "k", "l"]
console.log(str.split(" ",3))//["abc", "def", "ghi"]

大小写转换

toLowerCase

var str="ABC def!"
console.log(str.toLowerCase())//abc def!

toUpperCase

var str="ABC def!"
console.log(str.toUpperCase())//ABC DEF!

截取

substr-起始索引(可为负)+长度

从起始索引号提取字符串中指定数目的字符。
start:必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推,下同。
length:可选。子串中的字符数。必须是数值。省略该参数,那么返回的子串会一直到字符串的结尾。

var str="abc def"
console.log(str.substr(2))//c def
console.log(str.substr(2,4))// c de 

substring-起始索引+结束索引

提取字符串中两个指定的索引号之间的字符(左包含,右不包含)。第二个参数可选。省略该参数,那么返回的子串会一直到字符串的结尾。

var str="abc def"
console.log(str.substring(2))//c def
console.log(str.substring(2,4))// c 

slice-起始索引+结束索引(均可为负)

与 substring 类似,不过支持索引为负值

var str="abc def ghk"
console.log(str.slice(6))//f ghk

for-of 遍历

es6

for (let codePoint of ‘abc‘) {
  console.log(codePoint)
}
// "a"
// "b"
// "c"

除了遍历字符串,这个遍历器最大的优点是可以识别大于0xFFFF的码点,传统的for循环无法识别这样的码点。

拼接

repeat-重复

es6

repeat方法返回一个新字符串,表示将原字符串重复n次。

‘x‘.repeat(3) // "xxx"
‘hello‘.repeat(2) // "hellohello"
‘na‘.repeat(0) // ""

concat-拼接

var a = "abc";  
var b = "def";  
var c = a.concat(b);
console.log(c);//abcdef

字符串模板

模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。-----字符串模板,工作中用到比较多。

// 普通字符串
`In JavaScript ‘\n‘ is a line-feed.`

// 多行字符串
`In JavaScript this is
 not legal.`

console.log(`string text line 1
string text line 2`);

// 字符串中嵌入变量
let name = "Bob", time = "today";
`Hello ${name}, how are you ${time}?`

上面代码中的模板字符串,都是用反引号表示。如果在模板字符串中需要使用反引号,则前面要用反斜杠转义。

let greeting = `\`Yo\` World!`;

如果使用模板字符串表示多行字符串,所有的空格和缩进都会被保留在输出之中。

$(‘#list‘).html(`
<ul>
  <li>first</li>
  <li>second</li>
</ul>
`);

上面代码中,所有模板字符串的空格和换行,都是被保留的,比如

    标签前面会有一个换行。如果你不想要这个换行,可以使用trim方法消除它。

    $(‘#list‘).html(`
    <ul>
      <li>first</li>
      <li>second</li>
    </ul>
    `.trim());
    

    模板字符串中嵌入变量,需要将变量名写在${}之中。

    function authorize(user, action) {
      if (!user.hasPrivilege(action)) {
        throw new Error(
          // 传统写法为
          // ‘User ‘
          // + user.name
          // + ‘ is not authorized to do ‘
          // + action
          // + ‘.‘
          `User ${user.name} is not authorized to do ${action}.`);
      }
    }
    

    大括号内部可以放入任意的 JavaScript 表达式,可以进行运算,以及引用对象属性。

    let x = 1;
    let y = 2;
    
    `${x} + ${y} = ${x + y}`
    // "1 + 2 = 3"
    
    `${x} + ${y * 2} = ${x + y * 2}`
    // "1 + 4 = 5"
    
    let obj = {x: 1, y: 2};
    `${obj.x + obj.y}`
    // "3"
    

    模板字符串之中还能调用函数。

    function fn() {
      return "Hello World";
    }    
    `foo ${fn()} bar`
    // foo Hello World bar
    

    如果大括号中的值不是字符串,将按照一般的规则转为字符串。比如,大括号中是一个对象,将默认调用对象的toString方法。
    如果模板字符串中的变量没有声明,将报错。

    // 变量place没有声明
    let msg = `Hello, ${place}`;
    // 报错
    

    由于模板字符串的大括号内部,就是执行 JavaScript 代码,因此如果大括号内部是一个字符串,将会原样输出。

    `Hello ${‘World‘}`
    // "Hello World"
    

    模板字符串甚至还能嵌套。

    const tmpl = addrs => `
      <table>
      ${addrs.map(addr => `
        <tr><td>${addr.first}</td></tr>
        <tr><td>${addr.last}</td></tr>
      `).join(‘‘)}
      </table>
    `;
    

    参考

    JavaScript字符串操作方法大全,包含ES6方法 - SegmentFault 思否

    javascript正则表达式 - 司徒正美 - 博客园

    标签:Javascript

JavaScript 字符串常用操作

原文:https://www.cnblogs.com/simplue/p/14402624.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!