JavaScript中字符串的常见api操作(偏ES5)
1. api简单汇总
1.1 string相关操作汇总
获取字符串长度 str.length
分割字符串 str.split()
拼接字符串 str1+str2 或 str1.concat(str2)
替换字符串 str.replace(“玩游戏”,”好好学习”)
提取子字符串 str.slice(start, end)或str.substring(start,end)或mystr.substr(start,length)
切换字符串大小写 str.tolowercase()和str.touppercase()
比较字符串 str1.localecompare(str2)
匹配字符串 str.match(pattern)或pattern.exec(str)或str.search(pattern)
根据位置查字符 str.charat(index)
根据位置字符unicode编码 str.charcodeat(index)
根据字符查位置 str.indexof(“you”)从左,mystr.lastindexof(“you”)从尾 或str.search(‘you’)
原始数据类型转字符串 string(数据) 或利用加号
字符串转原始数据类型 数字number(”) // 0 布尔boolean(”) // 0
自己构建属性和方法 string.prototype.属性或方法= function(参数){代码}
1.2 api所属大体位置
利用控制台,通过原型链的知识,可以大体知道api在哪些对象里。
2. 字符串类型转换
这里只讨论原始数据类型之间的转换
2.1 原始数据类型转 string
string() string(123) // "123" string('abc') // "abc" string(true) // "true" string(undefined) // "undefined" string(null) // "null"
隐式转换 +
2.2 string 转其他类型
数字
number('') // 0
布尔
boolean('') // 0
3. 字符串分割
一个字符串分割为多个字符串
split()
var mystr = "i,love,you,do,you,love,me"; var substrarray = mystr.split(","); // ["i", "love", "you", "do", "you", "love", "me"]; var arraylimited = mystr.split(",", 3); // ["i", "love", "you"];
split()的第二个参数,表示返回的字符串数组的最大长度。
4. 获取字符串长度
length属性
var mystr = "i,love,you,do,you,love,me"; var mystrlength = mystr.length; //25
5. 查询子字符串
5.1 indexof()
它从字符串的开头开始查找,找到返回对应坐标,找不到返回-1。
var mystr = "i,love,you,do,you,love,me"; var index = mystr.indexof("you"); // 7 ,基于0开始,找不到返回-1
5.2 lastindexof()
它从字符串的末尾开始查找,找到返回对应坐标,找不到返回-1。
var mystr = "i,love,you,do,you,love,me"; var index = mystr.lastindexof("you"); // 14
6. 字符串替换
replace()
var mystr = "i,love,you,do,you,love,me"; var replacedstr = mystr.replace("love","hate");//"i,hate,you,do,you,love,me"
默认只替换第一次查找到的,想要全局替换,需要置上正则全局标识,如:
var mystr = "i,love,you,do,you,love,me"; var replacedstr = mystr.replace(/love/g,"hate");//"i,hate,you,do,you,hate,me"
7. 查找给定位置的字符或其字符编码值
7.1 charat()
可用来获取指定位置的字符串,index为字符串索引值,从0开始到string.leng - 1,若不在这个范围将返回一个空字符串。
var mystr = "i,love,you,do,you,love,me"; var thechar = mystr.charat(8);// "o",同样从0开始
7.2 charcodeat
可返回指定位置的字符的unicode编码。charcodeat()方法与charat()方法类似,都需要传入一个索引值作为参数,区别是前者返回指定位置的字符的编码,而后者返回的是字符子串。
var mystr = "i,love,you,do,you,love,me"; var thechar = mystr.charcodeat(8); //111
8. 字符串连接
8.1 加号 +
var str1 = "i,love,you!"; var str2 = "do,you,love,me?"; var str = str1 + str2 + "yes!";//"i,love,you!do,you,love,me?yes!"
8.2 concat()
var str1 = "i,love,you!"; var str2 = "do,you,love,me?"; var str = str1.concat(str2);//"i,love,you!do,you,love,me?"
其中concat()函数可以有多个参数,传递多个字符串,拼接多个字符串。
9. 字符串提取
9.1 slice()
var mystr = "i,love,you,do,you,love,me"; var substr = mystr.slice(1,5);//",lov"
9.2 substring()
var mystr = "i,love,you,do,you,love,me"; var substr = mystr.substring(1,5); //",lov"
9.3 substr()
var mystr = "i,love,you,do,you,love,me"; var substr = mystr.substr(1,5); //",love"
与第一种和第二种不同的是,substr()第二个参数代表截取的字符串最大长度
10. 字符串大小写转换
tolowercase() touppercase()
var mystr = "i,love,you,do,you,love,me"; var lowcasestr = mystr.tolowercase();//"i,love,you,do,you,love,me"; var upcasestr = mystr.touppercase();//"i,love,you,do,you,love,me"
11. 字符串匹配
11.1 match()结合正则表达式
var mystr = "i,love,you,do,you,love,me"; var pattern = /love/; var result = mystr.match(pattern);//["love"] console.log(result .index);//2 console.log(result.input );//i,love,you,do,you,love,me
11.2 exec()结合正则表达式
var mystr = "i,love,you,do,you,love,me"; var pattern = /love/; var result = pattern .exec(mystr);//["love"] console.log(result .index);//2 console.log(result.input );//i,love,you,do,you,love,me
两个方法,匹配的结果都是返回第一个匹配成功的字符串,如果匹配失败则返回null。
11.3 search()结合正则表达式
var mystr = "i,love,you,do,you,love,me"; var pattern = /love/; var result = mystr.search(pattern);//2
仅返回查到的匹配的下标,如果匹配失败则返回-1。
12. 字符串比较
localecompare()
var mystr = "chicken"; var mystrtwo = "egg"; var first = mystr.localecompare(mystrtwo); // -1 first = mystr.localecompare("chicken"); // 0 first = mystr.localecompare("apple"); // 1
比较两个字符串,比较是规则是按照字母表顺序比较的
13. 自己扩展属性和方法
prototype属性
下面的代码给字符串添加了一个去除两边空格的方法
string.prototype.trim = function(){ return this.replace(/^\s*|\s*$/g, ''); }