[javascript学习指南]Javascript 中字符串方法总结

时间:2020-11-01  来源:班主任工作总结  阅读:


chartAt()以单字符字符串的形式返回给定位置的那个字符。而 charCodeAt() 返回的是字符编码。

varstringValue ="hello world";
/*chartAt()*/
console.log(stringValue.chartAt(1));// "e"
字符串操作方法

concat()(数组中也有该方法)

参数: 一个或多个字符串

将一个会多个字符串拼接起来,当然更常用的是使用 “+” 进行拼接

substring()与slice()(数组中也有此方法)

参数: 指定子字符串的开始位置 , 子字符串到哪里结束

作用:创建新的子字符串(可以理解为字符串截取)

substr()

参数: 指定子字符串的开始位置 , 返回的子字符串的字符个数

作用:创建新的子字符串(可以理解为字符串截取)

repeat()(ES6新增)

参数: 数字(表示重复的次数)

作用:将原字符串重复n次

如果传入负数,则报错,传入小数和 NaN 等同于传入0

substring,slice,substr,repeat均返回子字符串,不会修改原来的字符串

varstringValue ="hello world";
alert(stringValue.slice(3));//"lo world"
alert(stringValue.substring(3));//"lo world"
alert(stringValue.substr(3));//"lo world"
alert(stringValue.slice(3,7));//"lo w"
alert(stringValue.substring(3,7));//"lo w"
alert(stringValue.substr(3,7));//"lo worl"
/*repeat()*/
vara ="he";
varb = a.repeat(3);
console.log(`${a}---${b}`);/ //"he---hehehe"
当给这三个方法传入负值的时候,三个的表现不同:

slice()会将传入的负值与字符串的长度相加
substr()会将 第一个 位置的 负值 参数加上字符串长度后转为正数,而 第二个 位置的 负值 将转化为0
substring()会把所有的负参数转化为0
repeat()会报错
字符串位置方法

indexOf()和lastIndexOf()(数组中也有该方法)

参数: 要搜索的子字符串 , 开始搜索的位置(可选)

搜索给定的子字符串,如果找到则返回位置,否则返回-1

varstringValue ="hello world";
alert(stringValue.indexOf("o"));//4
alert(stringValue.lastIndexOf("o"));//7
这两个方法在搜索到第一个匹配的子字符串后就停止运行,所以如果想找到字符串中所有的

子字符串出现的位置,可以循环调用 indexOf 或 lastIndexOf 。

varstringValue ="Lorem ipsum dolor sit amet, consectetur adipisicing elit";
varpositions =newArray();
varpos = stringValue.indexOf("e");

while(pos >-1){
 positions.push(pos);
 pos = stringValue.indexOf("e", pos +1);
}

alert(positions); //"3,24,32,35,52"
ES6新增includes()、startsWith()、endsWith()

includes():返回布尔值,表示是否找到了参数字符串
startsWith():返回布尔值,表示参数字符串是否在源字符串的头部
endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部
这三个方法的参数与 indexOf() , lastIndexOf() 一样

vars ="Hello world";
s.startsWith("world",6);// true
s.endsWith("Hello",5);// true
s.includes("Hello",6);//false
注意:

使用第2个参数n时, endsWith 的行为与其他两个方法有所不同。它针对 前面 n个字符,而其他两个方法针对从第n个位置开始直到字符串结束的字符。

去空格–trim()

ES5中新增 trim() 方法用于去除字符串的左右空格, 该方法会创建一个字符串的副本,不会改变原有的字符串 ,此外,Firefox 3.5+、Safari 5+

和 Chrome 8+还支持非标准的 trimLeft()和 trimRight()方法,分别用于删除字符串开头和末尾的

空格。

其实去空格可以使用正则去匹配的去掉,这里写一个去空格函数

/*trim 去掉空白
str要处理的字符串
[type] 类型:l 去除左边的空白 r去除右边空白 b去掉两边的空白 a去除所有空白*/
functiontrim(str,type){
vartype=type||"b";
if(type=="b"){
returnstr.replace(/^\s*|\s*$/g,"");
 }elseif(type=="l"){
returnstr.replace(/^\s*/g,"");
 }elseif(type=="r"){
returnstr.replace(/\s*$/g,"");
 }elseif(type=="a"){
returnstr.replace(/\s*/g,"");
 }
}
字符串大小写转换

toLowerCase()、toLocaleLowerCase()、toUpperCase()和 toLocaleUpperCase()

字符串的模式匹配方法

match()

参数: 一个正则表达式或RegExp对象

返回一个数组。在字符串上调用这个方法本质上与调用RegExp的exec()方法相同。

vartext ="cat, bat, sat, fat";
varpattern =/.at/;

//与 pattern.exec(text)相同
varmatches = text.match(pattern);
alert(matches.index); //0
alert(matches[0]);//"cat"
alert(pattern.lastIndex); //0
search()

参数: 一个正则表达式或RegExp对象

返回字符串中第一个匹配项的索引,如果没有找到,则返回-1

vartext ="cat, bat, sat, fat";
varpos = text.search(/at/);
alert(pos); //1
replace()

参数: 一个RegExp对象或者一个字符串(这个字符串不会被转换成正则表达式) , 一个字符串或一个函数

利用 replace() 进行替换的时候,如果传入的是字符串,则只会替换第一个子字符串,要想替换所有的子字符串,则需要传入一个正则表达式,而且要指定全局(g)标志

vartext ="cat , bat , sat , fat";
varresult = text.replace("at","ond");
console.log(result);// =>"cont , bat , sat , fat"

result = text.replace(/at/g,"ond");
console.log(result);//=>"cont , bont , sont , font"
该方法并不改变调用它的字符串本身,只是返回一个新的替换后的字符串。

当第二个参数为函数时函数的返回值作为替换字符串。与第二个参数是字符串一样,如果第一个参数是正则表达式,并且全局匹配,则这个函数的方法将被多次调用,每次匹配都会被调用。

该函数的参数:

match:匹配的子串
p1,p2…:假如 replace() 方法的第一个参数是RegExp对象,则代表第n个括号匹配的字符串。
offset:匹配到的子字符串在原字符串中的偏移量。(比如,如果原字符串是“abcd”,匹配到的子字符串时“bc”,那么这个参数是1)
被匹配的原字符串
functionreplacer(match , p1 , p2 , p3 , offset , string){
// p1 is nondigits, p2 digits, and p3 non-alphanumerics
console.log(`${match}
${p1}
${p2}
${p3}
${offset}
${string}`);
/* => abc12345#$*%
 abc
 12345
 #$*%
 0
 abc12345#$*%" */
console.log([p1, p2, p3].join(" - "));// => "abc - 12345 - #$*%"
return[p1, p2, p3].join(" - ");
}
varnewString ="abc12345#$*%".replace(/([^\d]*)(\d*)([^\w]*)/, replacer);// =>"abc - 12345 - #$*%"
split()

参数: 用于分隔字符串的分隔符 , 数字(可选,用于指定数组的大小)

作用:基于指定的分隔符将一个字符串分割成多个子字符串,并将结果放在一个 数组 中,分隔符可以是字符串,也可以是RegExp对象

varcolor ="red,blue,yellow,black";
varcolor1 = color.split(",");// =>["red","blue","yellow","black"]
varcolor2 = color.split(",",2);// =>["red","blue"]
varcolor3 = color.split(/[^\,]+/);// =>["", ",", ",", ",", ""]
最后一个调用 split 的时候,出现了前后的两个空白,是因为通过正则表达式指定的分隔符出现在了字符串的开头和结尾。

localeCompare()

这个方法用于比较两个字符串,并返回下列值中的一个:

如果字符串在字母表中应该排在字符串参数之前,则返回负数(大多情况下为-1)
如果相等,则返回0
如果排在字符串参数之前,则返回正数(大多数情况下为1)
fromCharCode()

String构造函数的一个静态方法

参数: 一个或多个字符串编码

作用:将接收到的一个或多个字符串编码 转换 成一个字符串,这个方法与实例方法 charCodeAt() 执行 相反 的操作。

/*fromCharCode*/
String.fromCharCode(104,101,108,108,111);// =>hello
/*charCodeAt*/
lets ="hello";
for(leti=0;i console.log(`${s[i]}----${s[i].charCodeAt()}`);
}
/*
"h----104"
"e----101"
"l----108"
"l----108"
"o----111"
*/

最后写一个字符串与数组方法应用的一个例子,熟悉它们方法的话很简单,不熟悉就会觉得有点儿乱。

lets ="hello";
letnews = s.split("").reverse().join("");
console.log(news);// => "olleh"


将字符串分割成多个子字符串
 

为了区分一个字符串转换为一个子字符串数组,你可以使用的split()方法:

 

1 var myString = "coming,apart,at,the,commas";
2 var substringArray = myString.split(","); // ["coming", "apart", "at", "the", "commas"]
3 var arrayLimited = myString.split(",", 3); // ["coming", "apart", "at"]
 

最后一行的第二个参数限制了数组参数所指定的项目的数量。

 

获取一个字符串的长度
 

要找出多少个字符长的字符串的length属性:

1 var myString = "You"re quite a character.";
2 var stringLength = myString.length; // 25
 

 

在字符串中找到一个子串
 

这样做的方法有两种。

使用indexOf():

1 var stringOne = "Johnny Waldo Harrison Waldo";
2 var wheresWaldo = stringOne.indexOf("Waldo"); // 7
indexOf()方法从字符串的开头开始搜索的子串(通过)第一个参数,并返回第一次出现子字符串的开始位置。

使用lastIndexOf() :

1 var stringOne = "Johnny Waldo Harrison Waldo";
2 var wheresWaldo = stringOne.lastIndexOf("Waldo"); // 22
lastIndexOf()方法是完全一样的,只不过它返回传递的子字符串中最后一次出现的起始位置。

在这两种方法中,如果没有找到子字符串,则返回值-1,并允许一个可选的第二个参数表示您要开始搜索的字符在字符串中的位置

 

替换掉一个子串
 

要更换一个新的字符串的字符串的一部分或全部,你可以使用replace():

 

1 var slugger = "Josh Hamilton";
2 var betterSlugger = slugger.replace("h Hamilton", "e Bautista");
3 console.log(betterSlugger); // "Jose Bautista"
 

 第一个参数是你要替换的子字符串,第二个参数是新的子串。这只会替换匹配的子字符串的第一个实例。

 要更换匹配的子字符串的所有实例,使用正则表达式的全局标志:

1 var myString = "She sells automotive shells on the automotive shore";
2 var newString = myString.replace(/automotive/g, "sea");
3 console.log(newString); // "She sells sea shells on the sea shore"
第二个参数可以包括特殊的替换模式,或可以是一个函数。

 

在给定的位置,找到相应的字符
 

要查找的字符是在指定的位置,你可以使用charAt()方法:

var myString = "Birds of a Feather";
var whatsAtSeven = myString.charAt(7); // "f"
往往是在JavaScript的情况下,引用该字符串中的第一个位置为“0”,而不是“1”。

 或者,您也可以使用charCodeAt() ,它给你,而不是字符本身的字符代码:

1 var myString = "Birds of a Feather";
2 var whatsAtSeven = myString.charCodeAt(7); // "102"
3 var whatsAtEleven = myString.charCodeAt(11); // "70"
请注意,大写字母“F”的位(11)的字符代码与小写字母“f”的位(7)从字符码不同。

 

连接多个字符串
 

在大多数情况下,当您连接字符串时,你会使用加法运算符(+)。但你也可以选择使用CONCAT()方法:

1 var stringOne = "Knibb High football ";
2 var stringTwo = stringOne.concat("rules."); // "Knibb High football rules"
您还可以通过将多个字符串,将被一个个的追加起来(在它们出现的顺序):


1 var stringOne = "Knibb ";
2 var stringTwo = "High ";
3 var stringThree = "football ";
4 var stringFour = "rules.";
5 var finalString = stringOne.concat(stringTwo, stringThree, stringFour);
6 console.log(finalString); // "Knibb high football rules."

 

 

提取字符串(组成新字符串)
 

有三种不同的方法来创建一个新的字符串值:

使用slice()方法:

1 var stringOne = "abcdefghijklmnopqrstuvwxyz";
2 var stringTwo = stringOne.slice(5, 10); // "fghij"
使用substring()方法:

 

var stringOne = "abcdefghijklmnopqrstuvwxyz";
var stringTwo = stringOne.substring(5, 10); // "fghij"
 

 

对于这两个slice()和substring()方法的第一个参数是你想要的开始的子串,第二个参数(这是可选的)后的字符串中的字符结束的字串。因此,在上面的例子中,参数“5,10”,是指,字符5到9,以创建一个新的字符串。

使用SUBSTR()

var stringOne = "abcdefghijklmnopqrstuvwxyz";
var stringTwo = stringOne.substr(5, 10); // "fghijklmno"
SUBSTR() ,第一个参数代表开始新的字符串的字符,第二个参数是可选的。但这个时候,第二个参数表示的字符的总数应包括的开始的字符“5”的位置。

 

一个字符串转换为大写或小写
 

有四种方法做大小写转换。有两个字符串转换为全部大写:

1 var stringOne = "Speak up, I can"t hear you.";
2 var stringTwo = stringOne.toLocaleUpperCase(); // "SPEAK UP, I CAN"T HEAR YOU"
3 var stringThree = stringOne.toUpperCase(); // "SPEAK UP, I CAN"T HEAR YOU"
将字符串转换为小写:

1 var stringOne = "YOU DON"T HAVE TO YELL";
2 var stringTwo = stringOne.toLocaleLowerCase(); // "you don"t have to yell"
3 var stringThree = stringOne.toLowerCase(); // "you don"t have to yell"
 

模式匹配
 

在一个字符串匹配的模式,可以使用两种方法,其基本的工作方式相同。

 

一个字符串match()方法被调用,并通过正则表达式:


1 var myString = "How much wood could a wood chuck chuck";
2 var myPattern = /.ood/;
3 var myResult = myString.match(myPattern); // ["wood"]
4 var patternLocation = myResult.index; // 9
5 var originalString = myResult.input // "How much wood could a wood chuck chuck"

 

 

exec()方法被调用的一个正则表达式对象,并通过字符串:


var myString = "How much wood could a wood chuck chuck";
var myPattern = /.huck/;
var myResult = myPattern.exec(myString); // ["chuck"]
var patternLocation = myResult.index; // 27
var originalString = myResult.input // "How much wood could a wood chuck chuck"

 

 对于这两种方法,只在第一个匹配发生被返回。如果没有找到匹配,将返回空值。

 

也可以使用search()方法,它接受一个正则表达式作为唯一的参数,并返回模式第一次出现的位置:

1 var myString = "Assume";
2 var patternLocation = myString.search(/ume/); // 3
如果没有找到匹配,则该方法返回“-1”。

 

比较两个字符串的排序顺序
 

您可以比较两个字符串,看看哪一个字母先靠前使用localeCompare,,有三个可能的返回值:


1 var myString = "chicken";
2 var myStringTwo = "egg";
3 var whichCameFirst = myString.localeCompare(myStringTwo); // -1 (except Chrome, which returns -2)
4 whichCameFirst = myString.localeCompare("chicken"); // 0
5 whichCameFirst = myString.localeCompare("apple"); // 1 (Chrome returns 2)
stringObject.localeCompare(target)//公式

如上图所示,如果 stringObject 小于 target,则 localeCompare() 返回小于 0 的数。如果 stringObject 大于 target,则该方法返回大于 0 的数。如果两个字符串相等,或根据本地排序规则没有区别,该方法返回 0。

由于浏览器可以返回任何负数或正数之前和之后的结果最好使用 if ( result < 0 ) ,而不是if ( result === -1 ),后者将无法在Chrome浏览器中运行。

[javascript学习指南]Javascript 中字符串方法总结

http://m.bbyears.com/banzhurengongzuo/108088.html

推荐访问:
相关阅读 猜你喜欢
本类排行 本类最新