JavaScript 字符串

1.字符串的转换
toString() 方法,返回一个表示该对象的字符串,可以将所有的数据都转换为字符串,但是要排除掉 null
和 undefined
var a = 10;
console.log(a.toString());

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

String() 函数,把对象的值转换为字符串,可以将 null
和 undefined
转换为字符串,但是没法转进制字符串
var a =10;
console.log(String(a));

注释:方法是属于对象的,而字符串能够使用方法,是因为 ECMAScript 提供了 3 种特殊的引用类型:Boolean,Number,String。实际上,每当读取一个基本类型值时,后台就会创建一个对应的基本包装类型的对象
2. 字符串的创建
创建 String 对象一共有一下三种方法:
var str = new String("Nian糕");
var str1 = String("Nian糕");
var str2 = "Nian糕";
第一种是使用 String 构造函数严格的定义一个字符串对象,返回的也是一个对象 (object);
第二种是调用 String 函数,将转换参数 "Nian糕" 为原始字符串字符串并返回;
第三种是定义一个字符串变量,但在 JavaScript 仍然按照字符串对象来处理,我们通过 typeof
来看下区别
console.log(typeof str);
console.log(typeof str1);
console.log(typeof str2);

通过数组下标来获取字符串中的某一字符
var str = "hello world!";
console.log(str[0]);
console.log(str[5]);
console.log(str[11]);

String 类型都有一个 length
属性,表示字符串包含多少个字符
var str = "hello world!";
console.log(str.length);

接下来介绍下 String 对象常用的一些方法,我们一般只需要记住常用的就可以了,至于其他的一些方法,在需要用到的时候,再去查询就可以了
3. 字符串操作
a. 字符串拼接
concat()
方法,将一个或多个字符串与原字符串连接合并,形成一个新的字符串并返回
str.concat(string2, string3[, ..., stringN])

b. 字符串替换
replace()
方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串
stringObject.replace(regexp/substr,replacement)
参数 regexp / substr
必需,规定子字符串或要替换的模式的 RegExp 对象,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象
replacement
必需,一个字符串值,规定了替换文本或生成替换文本的函数

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

c. 字符串查找,返回字符子串
charAt()
方法从一个字符串中返回指定的字符
str.charAt(index)
参数 index
一个介于 0 和 1 - 小于字符串的长度之间的整数 (0~n-1),如果没有提供索引,charAt()
将使用 0
返回值 字符串中的字符从左向右索引,第一个字符的索引值为 0,最后一个字符的索引值为 stringName.length - 1
,如果指定的 index
值超出了该范围,则返回一个空字符串

d. 字符串查找,返回 Unicode 编码
charCodeAt()
方法可返回指定位置的字符的 Unicode 编码,这个返回值是 0 - 65535 之间的整数
stringObject.charCodeAt(index)
参数 index
一个大于等于 0,小于字符串长度的整数,如果不是一个数值,则默认为 0
返回值 返回值是一表示给定索引处字符的 UTF-16 代码单元值的数字;如果索引超出范围,则返回 NaN

注释:与该方法对应的一个方法是 fromCharCode()
,返回使用指定的Unicode值序列创建的字符串,大家可以自行了解,在这里不做过多的介绍
e. 字符串查找,返回位置
search()
方法,执行正则表达式和 String 对象之间的一个搜索匹配
str.search(regexp)
参数 regexp
,一个正则表达式 (regular expression) 对象,如果传入一个非正则表达式对象,则会使用 new RegExp(obj) 隐式地将其转换为正则表达式对象
返回值 如果匹配成功,则 search()
返回正则表达式在字符串中首次匹配项的索引,否则,返回 -1

f. 字符串分割
split()
方法将一个 String 对象分割成字符串数组,通过将字符串分成子串
str.split([separator],[limit])
参数 separator
指定用来分割字符串的字符,separator
可以是一个字符串或正则表达式, 如果忽略 separator
,则返回整个字符串的数组形式,如果 separator
是一个空字符串,则 str
将会把原字符串中每个字符的数组形式返回
limit
一个整数,该参数可选,限定返回的分割片段数量,split
方法仍然分割每一个匹配的 separator
,但是返回的数组只会截取最多 limit
个元素

g. 获取字符的位置
indexOf()
方法,返回在数组中可以找到给定元素的第一个索引,如果不存在,则返回 -1
stringObject.indexOf(searchvalue,fromindex)
参数 searchElement
要查找的元素
fromIndex
开始查找的位置,如果该索引值大于或等于数组长度,意味着不会在数组里查找,返回 -1;如果参数中提供的索引值是一个负值,则将其作为数组末尾的一个抵消,即 -1 表示从最后一个元素开始查找,-2 表示从倒数第二个元素开始查找 ,以此类推
返回值 首个被找到的元素在数组中的索引位置,若没有找到则返回 -1

h. 获取字符最后出现的位置
lastIndexOf()
方法,返回指定值在调用该方法的字符串中最后出现的位置,如果没找到则返回 -1,从该字符串的后面向前查找,从 fromIndex
处开始
str.lastIndexOf(searchValue[, fromIndex])
参数 searchValue
一个字符串,表示被查找的值
fromIndex
从调用该方法字符串的此位置处开始查找,可以是任意整数,默认值为 str.length
,如果为负值,则被看作 0,如果 fromIndex
> str.length
,则 fromIndex
被看作 str.length

i. 字符提取
slice()
方法,将数组的一部分浅拷贝, 返回到从开始到结束(不包括结束)选择的新数组对象,原始数组不会被修改
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()
方法,返回一个字符串在开始索引到结束索引之间的一个子集, 或从开始索引直到字符串的末尾的一个子集
str.substring(indexStart[, indexEnd])
参数 indexStart
一个 0 到字符串长度之间的整数
indexEnd
可选,一个 0 到字符串长度之间的整数

关于字符提取的方法还有一个,我们来简单了解一下
substr()
方法,返回一个字符串中从指定位置开始到指定字符数的字符
str.substr(start[, length])
参数 start
开始提取字符的位置,如果为负值,则被看作 strLength + start
,其中 strLength
为字符串的长度
length
可选,提取的字符数
注释: ECMAscript 没有对该方法进行标准化,因此不推荐使用该方法
k. 大小写转换
toLowerCase()
会将调用该方法的字符串值转为小写形式,并返回
toUpperCase()
将调用该方法的字符串值转换为大写形式,并返回

l. 字符串匹配
match()
方法,当一个字符串与一个正则表达式匹配时, 检索匹配项
str.match(regexp);
参数 regexp
一个正则表达式对象,如果传入一个非正则表达式对象,则会隐式地使用 new RegExp(obj) 将其转换为一个 RegExp ,如果你未提供任何参数,直接使用 match()
,那么你会得到一个包含空字符串的 Array : [""]
返回值 array
一个包含了整个匹配结果以及任何括号捕获的匹配结果的 Array
,如果没有匹配项,则返回 null

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

End of File
行文过程中出现错误或不妥之处在所难免,希望大家能够给予指正,以免误导更多人,最后,如果你觉得我的文章写的还不错,希望能够点一下喜欢和关注,为了我能早日成为简书优秀作者献上一发助攻吧,谢谢!^ ^