字符串是由双引号或单引号引起的字符序列。推荐使用单引号。双引号一般用于含有变量的字符串。
String 全局对象是一个用于字符串或一个字符序列的构造函数。
字符串语法
直接量定义
var str = 'string text'
var str = "string text"
var str = "中文/汉语"
var str = "español"
var str = "English "
var str = "हिन्दी"
var str = "العربية"
var str = "português"
var str = "বাংলা"
var str = "русский"
var str = "日本語"
var str = "ਪੰਜਾਬੀ"
var str = "한국어"
console.log(typeof str); // 控制台输出string
构造函数定义时,此时typeof str返回的是一个string对象。
构造函数定义字符串
var str = new String("哈哈");
console.log(typeof str); // 控制台输出object
构造函数定义时,此时typeof str返回的是一个object对象。
字符串API
charAt(index)输出字符串索引为index的字符。var str = "hello world"; console.log(str.charAt(1)); // 控制台输出 echarCodeAt(index)对应位置上的字符编码(ASCII)。var str = "hello world"; console.log(str.charCodeAt(1)); // 控制台输出 101String.fromCharCode(code)通过ASCII编码返回相应字符。console.log(String.fromCharCode(101)); // 控制台输出 eindexOf(string)查找string变量(子字符串)第一次出现的位置,如果未找到则返回-1;var str = "hello world"; console.log(str.indexOf("world")); // 第一次出现的索引为6lastIndexOf(String)查找String变量字符串最后一次出现的位置。返回值始终是从左到右的索引。为找到仍然返回-1;var str = "world hello world"; console.log(str.lastIndexOf("orld")); //控制台输出13;substr(start,length)、substring(start,end)与str.slice(beginIndex[, endIndex])这三个函数都是字符串截取的操作。substr(start,length)与substring(start,end)的区别是,所传参数不同。返回值为截取的字符串。substr(start,length)是从start索引开始截取,截取的长度length的字符串。如果length不传,则截取start后所有的字符串。
var str = "good good study!"; console.log(str.substr(0,3)); // 输出 goosubstring(start,end)使用start索引开始截取,截取到字符串的end索引。如果end索引不传,则截取start后所有的字符串。如果start>end,函数仍然可以正常运行,因为JS内部将end重新复制给start,start重新赋值给end。大小进行了相互交互。同时也与数组一样前包后不包!
var str = "good good study!"; console.log(str.substr(0,4)); //控制台输出 good.str.slice(beginIndex[, endIndex])与数组slice(beginIndex,endIndex)一致。从一个字符串中提取字符串并返回新字符串。在一个字符串中的改变不会影响另一个字符串。也就是说,slice 不会修改原字符串(只会返回一个包含了原字符串中部分字符的新字符串)。传入负值索引,此时字符串将从右至左开始截取字符串。如果所处啊值为负数,小的负数必须放在第一位,否则将输出空字符串
var str = "good good study!"; console.log(str.slice(-3,-1)); //控制台输出 dy.split(separator)将字符串以separator变量的分隔符切割成一个数组。与数组的APIjoin(separator)可以进行相互转换。var str = "good good study!"; console.log(str.split(" ")); // 控制台输出 [ 'good', 'good', 'study!' ]replace(pattern,replaceStr)字符串替换,pattern替换规则(可以为字符串亦可为正则表达式),replaceStr需要替换成新的字符串。默认替换一次!返回值为新的字符串!var str = "good good study!"; // 普通字符串 console.log(str.replace("good","****")); // 输出 **** good study! // 正则表达式 console.log(str.replace(/good/g,"****")); // 输出 **** **** study!
扩展
replace
上面简单提到关于正则部分如何使用。完成的replace函数参数形式可以是
string.replace(patter|regex,newStr|function(){});
- pattern需要替换的字符串
- regex需要替换的字符串表达式
- newStr替换的字符串
function(){}执行替换时的操作函数。
这里主要讲解function(){}时的用法。以及各个参数的含义:
// 需要替换的字符串
var num = "ha 1234 5678 12121";
// 使用正则表达式
var newNum = num.replace(/(\d{4}) (\d{4})/g,(matchStr,p1,p2,offset,string)=>{
// matchStr代表匹配到的字符串完整的字符串
console.log(matchStr);
// p1 代表正则表达式中的第一个中括号匹配到的内容。
console.log(p1);
// p2 代表正则表达式中的第二个中括号匹配到的内容。
console.log(p2);
// offset代表匹配到的索引位置
console.log(offset);
// string代表源字符串
console.log(string);
// 进行的相关操作。
var newStr = ......
// 返回操作后的字符串
return newStr;
});
console.log();
// 使用字符串
var newNum = num.replace("1234",(matchStr,offset,string)=>{
// 匹配到的完整字符串
console.log(matchStr);
// offset代表匹配到的索引位置
console.log(offset);
// string代表源字符串
console.log(string);
// 进行的相关操作。
var newStr = ......
// 返回操作后的字符串
return newStr;
});
控制台输出:
[Running] node "/Users/ermao/Development/learn_code/javascript/String.js"
1234 5678
1234
5678
3
ha 1234 5678 12121
1234
3
ha 1234 5678 12121
[Done] exited with code=0 in 0.053 seconds
【举例】
var num = "ha 1234 5678 12121";
var newNum = num.replace(/(\d{4}) (\d{4})/g,(matchStr,p1,p2,offset,string)=>{
console.log(matchStr);
console.log(p1);
console.log(p2);
console.log(offset);
console.log(string);
return p2+"-"+p1;
});
console.log("输出替换后的字符串:"+newNum);
控制台输出
[Running] node "/Users/ermao/Development/learn_code/javascript/String.js"
1234 5678
1234
5678
3
ha 1234 5678 12121
输出替换后的字符串:ha 5678-1234 12121
[Done] exited with code=0 in 0.044 seconds
思考
- "abcdefg"转为"gfedcba"逆序字符串。
var str = "abcdefg"; // 逆序 var str = str.split("").reverse().join(""); console.log(str);
本文深入解析字符串的构造方式、API使用及高级操作技巧,包括直接量与构造函数定义、字符串方法如charAt、indexOf、split与replace的详细应用,以及正则表达式在replace中的高级运用。

被折叠的 条评论
为什么被折叠?



