String常用总结


1.字符

  • length属性:表示字符串包含多少16位码元

  • charAt():方法返回给定索引位置的字符

  • charCodeAt() :可以查看指定码元的字符编码

  • String.fromCharCode():这个方法可以接受任意多个数值,返回字符串

    console.log(String.fromCharCode(0x61, 0x62, 0x63, 0x64, 0x65)); // "abcde"
  • codePointAt():正确解析既包含单码元字符又包含代理对字符的字符串(如笑脸)

    let message = "abde";
    console.log(message.codePointAt(2)); //128522
  • String.fromCodePoint():类似fromCharCode() 接收码点

2.规范化

某些Unicode字符可以有多种编码方式

normalize():接收一个标准 "NFD"、"NFC"、"NFKD"或"NFKC" 对字符进行统一标准化,以方便比较

console.log(a1 === a1.normalize("NFD")); // false

3.常用操作

  • concat():用于将一个或多个字符串拼接成一个新字符串 ,可用“+”代替
  • slice():接收两个参数 开始索引和结束索引(不包括结束) 可以取负值,如果开始大于结束位置则调换
  • substring():接收两个参数 开始索引和结束索引(不包括结束) 负值会转换为0
  • substr():接收两个参数 开始索引和返回字符串个数 第二个参数负值 转换为0
  • indexOf() 和 lastIndexOf():从字符串中搜索传入的字符串,并返回位置(如果没找到,则返回-1),一个从开头,一个从尾部

    第二个参数是起始查找位置
  • startsWith()、endsWith()、includes() :返回是否包含的布尔值, 第二个参数是起始查找位置
  • trim():返回原字符串去首尾空格副本 (trimLeft(),trimRight())
  • repeat():接收一个整数 返回复制后的副本
  • padStart()和padEnd():填充字符串 第一个参数为长度,第二个参数(可选默认为空格)填充字符

4.字符串迭代与解构

字符串原型暴露了[Symbol.iterator] () ,用来迭代每个字符

let message = "abc";
let stringIterator = message[Symbol.iterator]();
console.log(stringIterator.next());
//{value: "a", done: false}
console.log(stringIterator.next());
//{value: "b", done: false}
console.log(stringIterator.next());
//{value: "c", done: false}
console.log(stringIterator.next());
//{value: undefined, done: true}

可以通过for-of循环访问每个字符:

for (const c of "abcde") {
console.log(c);
}
// a
// b
// c
// d
// e

解构操作

let message = "abcde";
console.log([...message]); // ["a", "b", "c", "d", "e"]

注:可以把(...)解构操作符 理解为迭代结果用逗号分隔,所以

...message 可以看成 "a", "b", "c", "d", "e" ,再加方括号 即为结果。

5.大小写转换

toLowerCase()、toLocaleLowerCase()、 toUpperCase()和toLocaleUpperCase() 这两个用于特定地区语言

6.字符串匹配

1.match()

本质与RegExp的exec() 方法相同。方法接收一个参数:正则表达式对象,或表达式字符串

let text = "cat,bat";
let pattern = /(.)at/i; let matches = text.match(pattern)
//let matches = pattern.exec(text); 等价 //["cat", "c", index: 0, input: "cat,bat", groups: undefined]
console.log(matches[0]); // "cat"
console.log(matches[1]); // "c"
console.log(matches.lastIndex); //没有使用全局匹配,永远为0

2.search()

查找模式,方法接收一个参数:正则表达式对象,或表达式字符串。返回模式第一个匹配的位置索引,如果没找到则返回-1。

let text = "cat, bat, sat, fat";
let pos = text.search(/at/);
console.log(pos); // 1

3.replace()

用于替换字符串,方法接收两个参数,第一个参数为RegExp对象或字符串、第二个参数为字符串或函数。

  • 第一个参数为字符串则只会替换第一个字符串,如果全部替换,正则表达式必须带全局标记。

  • 第二个参数是字符串时有几个特殊字符,可用来表示匹配到的值

    $n:n为0-9,$1表示第一个捕获组的字符串

    let text = "bat, cat, fat, tat";
    let pattern = /(.)at/g; let result = text.replace(pattern,"$1$1"); //$1表示分组1 也就是at前面的字符
    console.log(result); //"bb, cc, ff, tt"
  • 第二个参数是函数,函数会接收三个参数:匹配的整个字符串、匹配索引、整个字符串。(多个捕获组会传多次)。

    函数应该返回一个字符串,表示替换内容。

    function htmlEscape(text) {
    return text.replace(/[<>"&]/g,
    function(match, pos, originalText) {
    switch(match) {
    case "<":
    return "&lt;";
    case ">":
    return "&gt;";
    case "&":
    return "&amp;";
    case "\"":
    return "&quot;";
    }
    });
    }
    console.log(htmlEscape("<p class=\"greeting\">Hello world!</p>"));
    // "&lt;p class=&quot;greeting&quot;&gt;Hello world!</p>"

4.split()

用于将字符串分割为数组,第一个参数可以是RegExp对象或字符串,第二个可选参数用于指定数组最大大小。

let colorText = "red,blue,green,yellow";
let colors1 = colorText.split(",");
// ["red", "blue", "green", "yellow"]
let colors2 = colorText.split(",", 2);
// ["red", "blue"]
let colors3 = colorText.split(/[^,]+/);
// ["", ",", ",", ",", ""] 如果分隔符在开头和结尾出现,数组的前后就会出现空字符串元素

7.字符串比较

localeCompare() 按照字母表原字符串应该排在字符串参数前头,则返回负值,相等为0,排在后面则为正值。

let stringValue = "yellow";console.log(stringValue.localeCompare("brick")); // 1

此方法支持多国语言

JS String总结的更多相关文章

  1. Right in the Center (js string algorithm)

    Right in the Center (js string algorithm) codewars https://www.codewars.com/kata/5f5da7a415fbdc0001a ...

  2. 说说 js String

    首先说说js的字符串,说到字符串这个就和我们原来的C# 代码有区别的就是,js里面没有chart类型.就是说他里面的 “ ”和‘ ’是要表达一样的意思. 其实这个里面就有一个问题了特别实在拼接字符串的 ...

  3. js string to int

    一.js中string转int有两种方式 Number() 和 parseInt() <script>     var   str='1250' ;  alert( Number(str) ...

  4. js string和number

    number Js只有一种数字类型(包括整型,浮点型) 极大或极小的可用科学计数法来表示.(7.7123e+1) 所有js数字均为64位 Js所有的数字都存储为浮点型 小数的最大位数是17位 0开头的 ...

  5. js String对象

    字符串(String) 字符串(String)使用长度属性length来计算字符串的长度: 在字符串中查找字符串 字符串使用 indexOf() 来定位字符串中某一个指定的字符首次出现的位置: 实例 ...

  6. js String对象中常用方法小结(字符串操作)

    1.charCodeAt方法返回一个整数,代表指定位置字符的Unicode编码. strObj.charCodeAt(index) 说明: index将被处理字符的从零开始计数的编号.有效值为0到字符 ...

  7. javascript js string.Format()收集

    方案1http://www.cnblogs.com/loogn/archive/2011/06/20/2085165.html String.prototype.format = function(a ...

  8. js String方法集合

    //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String//返回对应索引的字符 ...

  9. js String Trim函数

    <javascript> String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g,"& ...

  10. js string 转 int 注意的问题——parseInt

    < script > var str = '1250';alert(Number(str)); //得到1250 alert(parseInt(str)); //得到1250 var st ...

随机推荐

  1. 2019 GDUT Rating Contest I : Problem B. Teamwork

    题面: 传送门 B. Teamwork Input file: standard input Output file: standard output Time limit: 1 second Memor ...

  2. P1090 合并果子(JAVA语言)

    题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可 ...

  3. Android学习之CoordinatorLayout+FloatingActionButton+Snackbar

    CoordinatorLayout •简介 CoordinatorLayout 协调布局,可以理解为功能更强大的 FrameLayout 布局: 它在普通情况下作用和 FrameLayout 基本一致 ...

  4. Android Studio 报错:你的主机中的软件中止了一个已建立的连接

    •解决方案 关闭电脑的移动热点 关闭后,build 就不会报错了. 等 build 好了后,重新打开移动热点,再次 build 一就不会报错.

  5. FFmpeg API的简单实践应用

    0. 前言 利用 FFmpeg 编译链接生成的可执行程序本身可以实现很多特定的功能,但如果我们有自己的个性化需求,想要在自己开发的项目中使用 ffmpeg 的一些功能,就需要理解并应用其已经实现好的A ...

  6. 敏捷史话(十二):你现在接触的敏捷也许是“黑暗敏捷”——Ron Jeffries

    他很少提起往事,也不再提及二十年前那场引起软件行业变革的会议,他专注于当下,一直活跃在敏捷领域.八十多岁的他依然运营维护着网站和博客,是极限编程网站 XProgramming.com 的作者,该网站是 ...

  7. 从 lite-apiserver 看 SuperEdge 边缘节点自治

    引言 在 SuperEdge 0.2.0版本中,lite-apiserver 进行了重大的架构升级和功能增强.本文将从 lite-apiserver 实现及其与其它 SuperEdge 组件协同的角度 ...

  8. [树形DP]二叉苹果树

    二 叉 苹 果 树 二叉苹果树 二叉苹果树 题目描述 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定 ...

  9. java面试-强引用、软引用、弱引用和幻象引用有什么区别

    在Java语言中,除了基本数据类型外,其他的都是指向各类对象的对象引用:Java中根据其生命周期的长短,将引用分为4类. 不同的引用类型,主要体现的是对象不同的可达性状态和对垃圾收集的影响. 1 .强 ...

  10. 201871030118-雷云云 实验二 个人项目—D{0-1}背包问题项目报告

    项目 内容 课程班级博客链接 班级博客 这个作业要求链接 作业链接 我的课程学习目标 1.了解并掌握psp2.掌握软件项目个人开发流程3.掌握Github发布软件项目的操作方法 这个作业在哪些方面帮助 ...