字符串原型:
通过修改字符串的原型,可以为所有字符串添加公共方法

String.prototype.startwith = function(text) {return this.indexOf(text) == 0;
};
var str = 'ABC123你好!';
str.startwith('A'); // 调用原型方法

JS 中的字符串操作
字符串:基本数据类型,一旦定义就不会被修改,如果修改则是重新开辟空间存储。字符串有属性length和一系列方法。
字符串的生成转换 (可以将任何类型的数据转换为字符串)
转换成字符串的三种方式:

.toString() 方法
注: undefined、null没有toString()方法。
var num = 28;
console.log(typeof num.toString());  // 返回结果是"string", String() 方法
注: undefiend、null可以通过String()转换为字符串(A + "") 拼接字符串
注: 所有的类型都可以通过拼接字符串的形式转换成字符串

根据索引查找字符:
1. str.charAt(索引值); // 获取指定索引上的字符

var str = 'ABC123你好!';
console.log( str.charAt(1) ); // B
console.log( str.charAt(str.length-1) ); // !
console.log( str.charAt(1000) ); // '' 索引超出边界返回空

2. str[索引值] : str[0] 和数组一样,通过下标获取,H5新增,IE6-7-8不支持

var str = 'ABC123你好!';
console.log( str[1] ); // B
console.log( str[str.length-1] ); // !
console.log( str[10000] ); // 索引超出边界返回undefined

3. str.charCodeAt(索引值); // 获取指定索引上的Unicode编码

var str = 'ABC123你好!';
console.log( str.charCodeAt(1) ); // 66
console.log( str.charCodeAt(str.length-1) ); // 65281
console.log( str.charCodeAt(1000) ); // 索引超出边界返回NaN

根据字符查索引:
1. str.indexOf('字符串'); 从左往右查, 返回当前存在字符的位置

var str = 'ABC123你好!';
console.log( str.indexOf("C") ); // 2
console.log( str.indexOf("Ga") ); // 未找到匹配字符,返回 -1

2. str.lastIndexOf('字符串'); 从右往左查,返回当前存在字符的位置

var str = 'ABC123你好!';
console.log( str.lastIndexOf("C") ); // 2
console.log( str.lastIndexOf("Ga") ); // 未找到匹配字符,返回-1

字符串拼接:
1. 使用 +号 拼接字符串

var str = 'ABC123你好!';
str = str + '深圳'; // ABC123你好!深圳

2. concat() 方法可以拼接字符串,也能拼接数组

// 拼接字符串
str = str.concat('深圳'); // ABC123你好!深圳// 拼接数组
[1,5,9].concat([6,2,8]); // [1,5,9,6,2,8]

字符串截取:
1. arrayObject.slice(开始索引值,结束索引值); // 由于字符串是个类数组,所以slice能截取数组和字符串; 不改变原数据,返回值是剪切的内容

var str = 'ABC123你好!';
// 没有参数时: 拷贝一份
console.log( str.slice() ); // 'ABC123你好!'
// 一个参数时: 从开始索引值截取到最后
console.log( str.slice(3) ); // '123你好!'
// 两个参数时: 包左不包右
console.log( str.slice(0,3) ); // 'ABC'
// 当参数为负数时: 从右往左数
console.log( str.slice(-2) ); // '好!'
// 前大后小 则返回空字符串
console.log( str.slice(3,0) ); // 返回 空字符串
总结:
a). 支持对数组和字符串的截取(不改变原数据,返回值为截取内容)
b). 支持负数,一个参数时,从开始索引值截取到最后
c). 两个参数时,包左不包右,如果前大后小,则返回空字符串或数组

2. str.substr(开始索引值,截取个数);

var str = 'ABC123你好!';
// 没有参数时: 拷贝一份
console.log( str.substr() ); // 'ABC123你好!'
// 一个参数时: 从开始索引值截取到最后
console.log( str.substr(3) ); // '123你好!'
// 两个参数时: 从开始索引值截取1个
console.log( str.substr(2,1) ); // 'C'
// 当参数为负数时: 从右往左数
console.log( str.substr(-2) ); // '好!'
总结:
a). 不改变原数据,返回值为截取的内容。
b). 支持负数,一个参数时,从开始索引值截取到最后
c). 两个参数时, 从开始位置, 截取指定长度的字符

3. str.substring(开始索引值,结束索引值);

var str = 'ABC123你好!';
// 没有参数时: 拷贝一份
console.log( str.substring() ); // 'ABC123你好!'
// 一个参数时: 从开始索引值截取到最后
console.log( str.substring(3) ); // '123你好!'
// 两个参数时: 包左不包右
console.log( str.substring(0,3) ); // 'ABC'
// 不支持负数,如果是负数则视为0
console.log( str.substring( -11, 3) ); // 'ABC'
// 前大后小,则智能调换位置
console.log( str.substring(6,3) ); // '123'
总结:
a). 不改变原数据,返回值为截取的内容。
b). 不支持负数,如果是负数则视为0
c). 两个参数时,包左不包右,如果前大后小,则智能调换位置。

字符串替换:
1. str.replace(regExp/substr, 替换的内容);

var str = "Today is a good day."
// 字符串的形式: 只能替换一个, 无法忽略大小写
cosnole.log( str.replace('Today', 'Tomorrow') );// "Tomorrow is a good day."
// 正则的形式: 可以替换多个,可以忽略大小写
console.log( str.replace(/today/ig, 'Tomorrow') ); // 传入函数时的用法
str.replace(regExp/substr, function(a, b, c){// 可以传3个参数// a: 为匹配的字符串// b: 为匹配字符串的起始位置// c: 为调用replace方法的字符串本身
});

字符串大小写转换:

var str = 'ABC123你好!';
str.toLowerCase();  // 英文字符转换成小写
var str = 'abc123你好!';
str.toUpperCase(); // 英文字符转化成大写

字符串分割: split() 和 join() 是一对

str.split(分隔符[,分割长度]); // 用于把一个字符串分割成字符串数组
var str = 'aaa|bbb|ccc';
// 按'|'进行分割,参数不会出现在数组中;
console.log( str.split('|') ); // ["aaa","bbb","ccc"]
// 不带参数,整体作为一个元素
console.log( str.split() ); // ["aaa|bbb|ccc"]
// 按空字符串分割,则每个字符都为一个元素
console.log( str.split("") ); // ["a","a","a","|","b","b","b","|","c","c","c"]
// 指定长度分割
console.log( str.split("", 2) ); // ["a","a"]

字符串匹配:
1. str.search(regexp); // 匹配指定字符串, 返回起始位置,匹配不成功则返回 -1; 不执行全局匹配,匹配成功则不再匹配

var str = 'ABC123你好!';
str.search(/3/i); // 5
str.search(/D/i); // -1

2. str.match(substr/regexp); // 返回匹配结果的数组,匹配失败返回null

var str = 'A123B345ABC456";
// 在字符串内检索指定的值,或找到一个或多个匹配
console.log( str.match(/A/ig); // ["A","A"]
// 未找到匹配内容返回 null
console.log( str.match(/DDD/ig); // null

3. 正则方法: reg.test(str); // 返回 true 或 false

var str = 'ABC123你好!';
var reg = /ABC/ig;
console.log( reg.test(str) ); // true;
var reg = /DDD/ig;
cosnole.log( reg.test(str) ); // false;

4. 正则方法: reg.exec(str); 返回一个数组,存放匹配结果,未找到,返回null

字符串案例:
1. 统计一个字符串中出现次数最多的字符和次数。
例如: "Hollow word! good day!" => o, 5次

2. 获取URL中?后面的内容,并转化成对象的形式;
例如: "https://www.baidu.com/login?name=yuxi2018&password=123456&type=1" => { name: "yuxi2018", password: "123456", type: 1 }

3. 字符串去重
例如: "aabbcc123" => "abc123";

4. 生成驼峰法字符串
例如: border-bottom-color => borderBottomColor

转载于:https://www.cnblogs.com/yuxi2018/p/9531311.html

[记录] JavaScript 中的字符串操作相关推荐

  1. JavaScript中的字符串操作(转)

    http://www.cnblogs.com/xuebin/articles/1296837.html 最近编一个javascript的翻译程序,发现无法正确比较两个字符串的相等,上网查了查,发现这篇 ...

  2. JavaScript中的骚操作

    JavaScript中的骚操作--记录自用 JavaScript中的骚操作 数组去重 数组转化为对象(Array to Object) 活用三元表达式 转换为数字类型(Convert to Numbe ...

  3. 解析JavaScript中的字符串类型与字符编码支持

    JavaScript中的字符串也像Python那样支持反斜杠的转移,并且字符集方面默认为Unicode,下面就来详细解析JavaScript中的字符串类型与字符编码支持 定义 字符串就是零个或多个排在 ...

  4. 在JavaScript中反转字符串的三种方法

    This article is based on Free Code Camp Basic Algorithm Scripting "Reverse a String" 本文基于F ...

  5. JavaScript中的属性操作

    为什么80%的码农都做不了架构师?>>>    JavaScript中的属性操作 一. 原型链 在js中,任何一个对象都有一个prototype属性,在js中记做:_proto_. ...

  6. 如何在JavaScript中获取字符串数组的字符串?

    本文翻译自:How do you get a string to a character array in JavaScript? How do you get a string to a chara ...

  7. Javascript中的字符串拼接

    字符串拼接是所有程序设计语言都需要的操作.当拼接结果较长时,如何保证效率就成为一个很重要的问题.本文介绍的是Javascript中的字符串拼接,希望对你有帮助,一起来看. const icon = ' ...

  8. 在JavaScript中重复字符串的三种方法

    In this article, I'll explain how to solve freeCodeCamp's "Repeat a string repeat a string" ...

  9. 如何在JavaScript中反转字符串?

    在不使用内置函数( .reverse() .charAt()等)的情况下,如何在将字符串传递给带有return语句的函数时在JavaScript中将字符串原地(或原地)反向? #1楼 以下技术(或类似 ...

最新文章

  1. 收藏 | 最全中科大计算机学院课程资源(含答案)
  2. 桌面笔记工具KeepNote
  3. MongoDB C++ gridfs worked example
  4. 使用aggregate在MongoDB中查找重复的数据记录
  5. jieba分词单例模式及linux权限不够情况下tmp_dir自定义
  6. java之Stack详细介绍
  7. java 学习第三篇if判断
  8. 通过字节流来代替链接来下载小文件
  9. 【原创】昆虫棋离线复盘工具v1.5 更新(BoardSpace.net hive games reviewer)
  10. Linux命令——uptime
  11. html中的form是空标签么,关于html 中form表单的内标签和使用
  12. 探索:区块链视频流媒体平台
  13. Apache ShenYu(原 soul) 网关 整合 nacos
  14. 二元二次方程例题_二元二次方程组 解法 例题
  15. 违反GPL协议赔偿50万,国内首例!
  16. 职场001 什么时候跳槽
  17. 【一起入门NLP】中科院自然语言处理第16课-简明扼要:红到发紫的prompt是什么?【上】
  18. mybatis.org/dtd/mybatis-generator-config_1_0.dtd标红
  19. 如何快速提高开发技能
  20. Excel·VBA自定义正则表达式函数、使用

热门文章

  1. Nginx服务系列——代理
  2. 牛客小白月赛7 B 自杀游戏
  3. JEPLUS表格组件数据平铺——JEPLUS软件快速开发平台
  4. Spring Cloud(二) Consul 服务治理实现
  5. redis队列缓存 + mysql 批量入库 + php离线整合
  6. Oldboy28期linux决心书
  7. 现在的网盘对开发都极度不友好
  8. Action和Func的区别
  9. 如何自动保存邮件草稿
  10. Kotlin替换Dagger2/Hilt的依赖注入框架--Koin。