String方法详解
方法 | 描述 |
---|---|
charAt() | 返回在指定位置的字符。 |
charCodeAt() | 返回在指定的位置的字符的 Unicode 编码。 |
concat() | 连接字符串。 |
fromCharCode() | 从字符编码创建一个字符串。 |
indexOf() | 检索字符串。 |
lastIndexOf() | 从后向前搜索字符串。 |
slice() | 提取字符串的片断,并在新的字符串中返回被提取的部分。 |
split() | 把字符串分割为字符串数组。 |
toLowerCase() | 把字符串转换为小写。 |
toUpperCase() | 把字符串转换为大写。 |
toString() | 返回字符串。 |
trim() | 去除字符串头尾空格 |
charAt
定义与作用:
charAt() 方法可返回指定位置的字符。 提示:JavaScript 并没有一种有别于字符串类型的字符数据类型,所以返回的字符是长度为 1 的字符串。
语法:
stringObject.charAt(index)
参数说明:
参数 | 描述 |
---|---|
index | 必需。表示字符串中某个位置的数字,即字符在字符串中的下标。 |
演示代码:
var str="Hello world!"
console.log(str.charAt(1)) //输出 e
chatCodeAt
定义与作用:
charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。 方法 charCodeAt() 与 charAt() 方法执行的操作相似,只不过前者返回的是位于指定位置的字符的编码,而后者返回的是字符子串。
语法:
stringObject.charCodeAt(index)
参数说明:
参数 | 描述 |
---|---|
index | 必需。表示字符串中某个位置的数字,即字符在字符串中的下标。 |
演示代码:
var str="Hello world!"
console.log(str.charCodeAt(1)) // 输出 101
console.log(str.charCodeAt(2)) // 输出 108
concat
定义与作用:
concat() 方法用于连接两个或多个字符串。 oncat() 方法将把它的所有参数转换成字符串,然后按顺序连接到字符串 stringObject 的尾部,并返回连接后的字符串。并不修改stringObject的值 提示:请注意,使用 “ + “ 运算符来进行字符串的连接运算通常会更简便一些。
语法:
stringObject.concat(stringX,stringX,...,stringX)
参数说明:
参数 | 描述 |
---|---|
stringX | 必需。将被连接为一个字符串的一个或多个字符串对象。 |
演示代码:
var str1="Hello "
var str2="world!"
console.log(str1.concat(str2)) // 输出 Hello world!
console.log(str1) // 输出 Hello
console.log(str2) // 输出 world!
fromCharCode
定义与作用:
fromCharCode() 可接受一个指定的 Unicode 值,然后返回一个字符串。
注释:该方法是 String 的静态方法,字符串中的每个字符都由单独的数字 Unicode 编码指定。
它不能作为您已创建的 String 对象的方法来使用。因此它的语法应该是 String.fromCharCode(),而不是 myStringObject.fromCharCode()。
语法:
参数说明:
参数 | 描述 |
---|---|
numX | 必需。一个或多个 Unicode 值,即要创建的字符串中的字符的 Unicode 编码。 |
演示代码:
console.log(String.fromCharCode(72,69,76,76,79)) // 输出 HELLO
console.log(String.form(65,66,67)) // 输出ABC
indexOf
定义与作用:
lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
说明:该方法将从尾到头地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的结尾(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue 的第一个字符在 stringObject 中的位置。stringObject 中的字符位置是从 0 开始的。
语法:
stringObject.lastIndexOf(searchvalue,fromindex)
返回值:如果在 stringObject 中的 fromindex 位置之前存在 searchvalue,则返回的是出现的最后一个 searchvalue 的位置。
参数说明:
参数 | 描述 |
---|---|
searchvalue | 必需。规定需检索的字符串值。 |
fromindex | 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的最后一个字符处开始检索。 |
演示代码:
var str="Hello world!"
console.log(str.lastIndexOf("Hello")) // 输出 0
console.log(str.lastIndexOf("world")) // 输出 6
lastIndexOf
定义与作用:
lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
说明:该方法将从尾到头地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的结尾(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue 的第一个字符在 stringObject 中的位置。stringObject 中的字符位置是从 0 开始的。
语法:
stringObject.lastIndexOf(searchvalue,fromindex)
返回值:如果在 stringObject 中的 fromindex 位置之前存在 searchvalue,则返回的是出现的最后一个 searchvalue 的位置。
参数说明:
参数 | 描述 |
---|---|
searchvalue | 必需。规定需检索的字符串值。 |
fromindex | 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的最后一个字符处开始检索。 |
演示代码:
var str="Hello world!"
console.log(str.lastIndexOf("Hello")) // 输出 0
console.log(str.lastIndexOf("world")) // 输出 6
slice
定义与作用:
slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。
说明:String 对象的方法 slice()、substring() 和 substr() (不建议使用)都可返回字符串的指定部分。slice() 比 substring() 要灵活一些,因为它允许使用负数作为参数。slice() 与 substr() 有所不同,因为它用两个字符的位置来指定子串,而 substr() 则用字符位置和长度来指定子串。
语法:
string.slice(start,end)
返回值:一个新的字符串。包括字符串 stringObject 从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符。
参数说明:
参数 | 描述 |
---|---|
start | 必须。 要抽取的片断的起始下标,第一个字符位置为 0。如果为负数,则从尾部开始截取。 |
end | 可选。 紧接着要截取的片段结尾的下标。若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。 |
演示代码:
var str="Hello world!";
var n=str.slice(1,5); // ello
split
定义与作用:
split() 方法用于把一个字符串分割成字符串数组。
语法:
stringObject.split(separator,howmany)
返回值:一个字符串数组。该数组是通过在 separator 指定的边界处将字符串 stringObject 分割成子串创建的。返回的数组中的字串不包括 separator 自身。
但是,如果 separator 是包含子表达式的正则表达式,那么返回的数组中包括与这些子表达式匹配的字串(但不包括与整个正则表达式匹配的文本)。
参数说明:
参数 | 描述 |
---|---|
separator | 必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。 |
howmany | 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。 |
演示代码:
var str="How are you doing today?"
console.log(str.split(" "))
// 输出 ['How', 'are', 'you', 'doing', 'today?']
console.log(str.split(""))
// 输出 ['H', 'o', 'w', ' ', 'a', 'r', 'e', ' ', 'y', 'o', 'u', ' ', 'd', 'o', 'i', 'n', 'g', ' ', 't', 'o', 'd', 'a', 'y', '?']
console.log(str.split(" ",3))
// 输出 ['How', 'are', 'you']
toLowerCase
toUpperCase
定义与作用:
toLowerCase() 方法用于把字符串转换为小写。 toUpperCase() 方法用于把字符串转换为大写。
语法:
stringObject.toLowerCase()
stringObject.toUpperCase()
返回值:一个新的字符串,在其中 stringObject 的所有大写字符全部被转换为了小(大)写字符。
演示代码:
var str="How are you doing today?"
console.log(str.toLowerCase()) // how are you doing today?
console.log(str.toUpperCase()) // HOW ARE YOU DOING TODAY?
toString
定义与作用:
toString() 方法返回字符串。
语法:
stringObject.toString()
返回值:stringObject 的原始字符串值。一般不会调用该方法。
演示代码:
array.toString() 、 boolean.toString() 、 date.toString() 、 Number.toString()
array.toLocaleString() 、 date.toLocaleString() 、 Number.toLocaleString()
stringObject.valueOf()
parseInt
定义与作用:
把字符串转换为数字
语法:
parseInt('String')
返回值: 转换后的数字
演示代码:
let str1 = '123'
let str2 = '234a'
console.log(parseInt(str1)) 输出 123
console.log(parseInt(str1)) 输出 234
trim
定义与作用:
去掉字符串头尾字符
定义和用法
trim() 方法用于删除字符串的头尾空白符,空白符包括:空格、制表符 tab、换行符等其他空白符等。
trim() 方法不会改变原始字符串。
trim() 方法不适用于 null, undefined, Number 类型。
语法:
string.trim()
返回值: 移除空格后的字符的
演示代码:
var str = " Runoob ";
alert(str.trim()); //Runoob
三、方法总结
1.找到匹配字符串所在的各个位置
<script type="text/javascript">
/*找到匹配字符串所在的各个位置*/
var str="asadajhjkadaaasdasdasdasd";
var position=[];
var pos=str.indexOf("d");
while(pos>-1){
position.push(pos);
pos=str.indexOf("d",pos+1);
}
console.log(position);//[3, 10, 15, 18, 21, 24]
</script>
2.字符串去重
<script type="text/javascript">
//String.split() 执行的操作与 Array.join 执行的操作是相反的
//split() 方法用于把一个字符串分割成字符串数组。
//join方法用于将字符串数组连接成一个字符串
//如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。
var str="aahhgggsssjjj";//这里字符串没有可以分隔的字符,所以需要使用空字符串作为分隔符
function unique(msg){
var res=[];
var arr = msg.split("");
console.log(arr);
for(var i=0;i<arr.length;i++){
if(res.indexOf(arr[i])==-1){
//若res中没有arr[i] 这个元素就进入这个循环
res.push(arr[i]);
}
}
return res.join("");
}
console.log(unique(str));//【输出 - ahgsj 】
</script>
3.判断字符串中字符出现的次数
<script type="text/javascript">
/*
1.先实现字符串去重
2.然后对去重后的数组用for循环操作,分别与原始数组中各个值进行比较,如果相等则count++,循环结束将count保存在sum数组中,然后将count重置为0
3.这样一来去重后的数组中的元素在原数组中出现的次数与sum数组中的元素是一一对应的
*/
var str="aacccbbeeeddd";
var sum=[];
var res=[];
var count=0;
var arr=str.split("");
for(var i=0;i<arr.length;i++){
if(res.indexOf(arr[i])==-1){
res.push(arr[i]);
}
}
for(var i=0;i<res.length;i++){
for(var j=0;j<arr.length;j++){
if(arr[j]==res[i]){
count++;
}
}
sum.push(count);
count=0;
}
console.log(res);//["a", "c", "b", "e", "d"]
for(var i=0;i<res.length;i++){
var str=(sum[i]%2==0)?"偶数":"奇数";
console.log(res[i]+"出现了"+sum[i]+"次");
console.log(res[i]+"出现了"+str+"次");
}
</script>