JavaScript 字符串

2024-03-19 15:05:44 浏览数 (1)

UnsplashUnsplash

字符串的转换

toString() 方法,返回一个表示该对象的字符串,可以将所有的数据都转换为字符串,但是要排除掉 nullundefined

代码语言:javascript复制
var a = 10;
console.log(a.toString());
运行结果运行结果

.toString() 括号中的可以写一个数字,代表进制,即.toString(2);代表该字符串的二进制

运行结果运行结果

String() 函数,把对象的值转换为字符串,可以将 nullundefined 转换为字符串,但是没法转进制字符串

代码语言:javascript复制
var a =10;
console.log(String(a));
运行结果运行结果

注释:方法是属于对象的,而字符串能够使用方法,是因为 ECMAScript 提供了 3 种特殊的引用类型:Boolean,Number,String。实际上,每当读取一个基本类型值时,后台就会创建一个对应的基本包装类型的对象

字符串的创建

创建 String 对象一共有一下三种方法:

代码语言:javascript复制
var str = new String("Nian糕");
var str1 = String("Nian糕");
var str2 = "Nian糕";

第一种是使用 String 构造函数严格的定义一个字符串对象,返回的也是一个对象 (object);

第二种是调用 String 函数,将转换参数 "Nian糕" 为原始字符串字符串并返回;

第三种是定义一个字符串变量,但在 JavaScript 仍然按照字符串对象来处理,我们通过 typeof 来看下区别

代码语言:javascript复制
console.log(typeof str);
console.log(typeof str1);       
console.log(typeof str2);   
运行结果运行结果

通过数组下标来获取字符串中的某一字符

代码语言:javascript复制
var str = "hello world!";
console.log(str[0]);
console.log(str[5]);
console.log(str[11]);
运行结果运行结果

String 类型都有一个 length 属性,表示字符串包含多少个字符

代码语言:javascript复制
var str = "hello world!";
console.log(str.length);
运行结果运行结果

接下来介绍下 String 对象常用的一些方法,我们一般只需要记住常用的就可以了,至于其他的一些方法,在需要用到的时候,再去查询就可以了

字符串操作

a. 字符串拼接

concat() 方法,将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回

代码语言:javascript复制
str.concat(string2, string3[, ..., stringN])
运行结果运行结果

b. 字符串替换

replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串

代码语言:javascript复制
stringObject.replace(regexp/substr,replacement)

参数 regexp / substr 必需,规定子字符串或要替换的模式的 RegExp 对象,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象replacement必需,一个字符串值,规定了替换文本或生成替换文本的函数

运行结果运行结果

如果需要全局替换,只要在替换字符串后加上一个 g 就可以了

运行结果运行结果

c. 字符串查找,返回字符子串

charAt() 方法从一个字符串中返回指定的字符

代码语言:javascript复制
str.charAt(index)

参数 index 一个介于 0 和 1 - 小于字符串的长度之间的整数 (0~n-1),如果没有提供索引,charAt() 将使用 0

返回值 字符串中的字符从左向右索引,第一个字符的索引值为 0,最后一个字符的索引值为 stringName.length - 1,如果指定的 index 值超出了该范围,则返回一个空字符串

运行结果运行结果

d. 字符串查找,返回 Unicode 编码

charCodeAt() 方法可返回指定位置的字符的 Unicode 编码,这个返回值是 0 - 65535 之间的整数

代码语言:javascript复制
stringObject.charCodeAt(index)

参数 index 一个大于等于 0,小于字符串长度的整数,如果不是一个数值,则默认为 0

返回值 返回值是一表示给定索引处字符的 UTF-16 代码单元值的数字;如果索引超出范围,则返回 NaN

运行结果运行结果

注释:与该方法对应的一个方法是 fromCharCode(),返回使用指定的Unicode值序列创建的字符串,大家可以自行了解,在这里不做过多的介绍

e. 字符串查找,返回位置

search() 方法,执行正则表达式和 String 对象之间的一个搜索匹配

代码语言:javascript复制
str.search(regexp)

参数 regexp,一个正则表达式 (regular expression) 对象,如果传入一个非正则表达式对象,则会使用 new RegExp(obj) 隐式地将其转换为正则表达式对象

返回值 如果匹配成功,则 search() 返回正则表达式在字符串中首次匹配项的索引,否则,返回 -1

运行结果运行结果

f. 字符串分割

split() 方法将一个 String 对象分割成字符串数组,通过将字符串分成子串

代码语言:javascript复制
str.split([separator],[limit])

参数 separator 指定用来分割字符串的字符,separator 可以是一个字符串或正则表达式, 如果忽略 separator,则返回整个字符串的数组形式,如果 separator 是一个空字符串,则 str 将会把原字符串中每个字符的数组形式返回

limit 一个整数,该参数可选,限定返回的分割片段数量,split 方法仍然分割每一个匹配的 separator,但是返回的数组只会截取最多 limit 个元素

运行结果运行结果

g. 获取字符的位置

indexOf() 方法,返回在数组中可以找到给定元素的第一个索引,如果不存在,则返回 -1

代码语言:javascript复制
stringObject.indexOf(searchvalue,fromindex)

参数 searchElement 要查找的元素

fromIndex 开始查找的位置,如果该索引值大于或等于数组长度,意味着不会在数组里查找,返回 -1;如果参数中提供的索引值是一个负值,则将其作为数组末尾的一个抵消,即 -1 表示从最后一个元素开始查找,-2 表示从倒数第二个元素开始查找 ,以此类推

返回值 首个被找到的元素在数组中的索引位置,若没有找到则返回 -1

运行结果运行结果

h. 获取字符最后出现的位置

lastIndexOf() 方法,返回指定值在调用该方法的字符串中最后出现的位置,如果没找到则返回 -1,从该字符串的后面向前查找,从 fromIndex 处开始

代码语言:javascript复制
str.lastIndexOf(searchValue[, fromIndex])

参数 searchValue 一个字符串,表示被查找的值

fromIndex 从调用该方法字符串的此位置处开始查找,可以是任意整数,默认值为 str.length,如果为负值,则被看作 0,如果 fromIndex > str.length,则 fromIndex 被看作 str.length

运行结果运行结果

i. 字符提取

slice() 方法,将数组的一部分浅拷贝, 返回到从开始到结束(不包括结束)选择的新数组对象,原始数组不会被修改

代码语言:javascript复制
str.slice(beginSlice[, endSlice])

beginSlice 从该索引(以 0 为基数)处开始提取原字符串中的字符,如果值为负数,会被当做 sourceLength beginSlice 看待,这里的 sourceLength 是字符串的长度 (例如, 如果 beginSlice 是 -3 则看作是 sourceLength - 3)

endSlice 可选,在该索引(以 0 为基数)处结束提取字符串,如果省略该参数,slice 会一直提取到字符串末尾,如果该参数为负数,则被看作是 sourceLength endSlice,这里的 sourceLength 就是字符串的长度(例如,如果 endSlice 是 -3,则是 sourceLength - 3)

运行结果运行结果

j. 字符提取

substring() 方法,返回一个字符串在开始索引到结束索引之间的一个子集, 或从开始索引直到字符串的末尾的一个子集

代码语言:javascript复制
str.substring(indexStart[, indexEnd])

参数 indexStart 一个 0 到字符串长度之间的整数

indexEnd 可选,一个 0 到字符串长度之间的整数

运行结果运行结果

关于字符提取的方法还有一个,我们来简单了解一下

substr() 方法,返回一个字符串中从指定位置开始到指定字符数的字符

代码语言:javascript复制
str.substr(start[, length])

参数 start 开始提取字符的位置,如果为负值,则被看作 strLength start,其中 strLength 为字符串的长度

length 可选,提取的字符数

注释: ECMAscript 没有对该方法进行标准化,因此不推荐使用该方法

k. 大小写转换

toLowerCase() 会将调用该方法的字符串值转为小写形式,并返回

toUpperCase() 将调用该方法的字符串值转换为大写形式,并返回

运行结果运行结果

l. 字符串匹配

match() 方法,当一个字符串与一个正则表达式匹配时, 检索匹配项

代码语言:javascript复制
str.match(regexp);

参数 regexp 一个正则表达式对象,如果传入一个非正则表达式对象,则会隐式地使用 new RegExp(obj) 将其转换为一个 RegExp ,如果你未提供任何参数,直接使用 match(),那么你会得到一个包含空字符串的 Array : [""]

返回值 array 一个包含了整个匹配结果以及任何括号捕获的匹配结果的 Array ,如果没有匹配项,则返回 null

运行结果运行结果

m. 去掉首尾空格

trim() 方法会删除一个字符串两端的空白字符,在这个字符串里的空格包括所有的空格字符 (space, tab, no-break space 等)以及所有的行结束符(如 LF,CR)

运行结果运行结果

0 人点赞