JavaScript 字符串

作者: Nian糕 | 来源:发表于2017-03-25 17:30 被阅读124次
    Unsplash

    1.字符串的转换

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

    var a = 10;
    console.log(a.toString());
    
    运行结果

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

    运行结果

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

    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

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

    相关文章

      网友评论

      本文标题:JavaScript 字符串

      本文链接:https://www.haomeiwen.com/subject/jhrzgttx.html