关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » JavaScript »JavaScript String 对象实例深入研究

    JavaScript String 对象实例深入研究

    2015-03-09 00:00:00 出处:hacke2
    分享

    本文主要介绍并分析JavaScript中String对象的具体用法,以及和String对象相关的方法,方便开发者在JavaScript开发中更好地处理字符串。

    1. 介绍

    String 对象,对字符串进行操作,如:截取一段子串、查找字符串/字符、转换大小写等等。

    2. 定义方式

    2.1 new String(Value) 构造函数:返回一个内容为Value的String对象
    参数:

    ①value {String} :字符串

    返回值:

    {String对象} 返回一个内容为Value的String对象

    示例:

    var demoStr = new String('abc');
    console.log(typeof demoStr); // => object
    console.log(demoStr); // => abc

    2.2 直接赋值(推荐)
    示例:

    var demoStr = 'abc';
    console.log(typeof demoStr); // string
    console.log(demoStr); // => abc

    3. 实例属性

    3.1 length :返回字符串中的字符数

    var s = 'abc';
    console.log(s.length); // => 3
    console.log('新年快乐'.length); // => 4 :一个中文字符也计算为1个数量
    console.log(''.length); // => 0 :空字符串返回0

    4. 实例方法

    注意:字符串的实例方法不会改变字符串的本身,只返回操作后的结果。

    4.1 charAt(index) :返回一个字符串中指定位置的字符,编号从0开始,若传入个不存在的数值,就返回空字符串
    参数:

    ①index {int} :位置索引,从0开始计算

    返回值:

    {string} 返回一个字符串中指定位置的字符;若传入个不存在的位置数值,返回一个空字符串

    示例:

    var s = 'abc';
    console.log(s.charAt(1)); // => b :返回位置为1的字符
    console.log(s); // => 不影响原来的数组
    console.log(s.charAt(5)); // => '' :获取一个不存在位置的字符,返回一个长度为0的空字符串

    4.2 charCodeAt(index) :返回一个字符串中指定位置字符的Unicode编码
    参数:

    ①index {int} :位置索引,从0开始计算

    返回值:

    {number} 返回一个字符串中指定位置字符的Unicode编码;若传入个不存在的位置数值,返回NaN

    示例:

    var s = 'abc';
    console.log(s.charCodeAt(0)); // => 98 :字符b的Unicode编码
    console.log(s.charCodeAt(5)); // => NaN :获取一个不存在位置的字符,返回NaN

    4.3 concat(value1,value2 … valueN) :连接一个或多个字符串,并返回连接后的字符串
    参数:

    ①value1,value2 … valueN {string} :一个或多个字符串

    返回值:

    {string} 返回连接后的字符串

    示例:

    var s = 'abc';
    console.log(s.concat('d')); // => abcd
    console.log(s); // => abc :不影响原先的字符串
    console.log(s.concat('d', 'e')); // => abcde

    4.4 indexOf(value , |startPosition ) :在实例中从前往后查找一个字符串或字符,并返回找到的位置(从0开始计数)。若未找到,返回-1
    参数:

    ①value {string} :查找的字符串

    ②startPosition {int} 可选 :开始查找的起始位置,默认从位置0开始查找

    返回值:

    {int} 返回找到的位置(从0开始计数)。若未找到,返回-1

    示例:

    var s = 'abc';
    console.log(s.indexOf('b')); // => 1
    console.log(s.indexOf('d')); // => -1 :未找到
    console.log(s.indexOf('b', 2)); // => -1 :从位置2(第3个字符处)开始查找

    4.5 lastIndexOf(value , |startPosition ) :在实例中从后往前开始查找一个字符串或字符,并返回找到的位置(从0开始计数)。若未找到,返回-1
    参数:

    ①value {string} :查找的字符串

    ②startPosition {int} 可选 :开始查找的起始位置,默认从最后开始查找

    返回值:

    {int} 返回找到的位置(从0开始计数)。若未找到,返回-1

    示例:

    var s = 'abcabc';
    console.log(s.lastIndexOf('a')); // => 3 :从后往前查找
    console.log(s.lastIndexOf('d')); // => -1 :未找到返回-1
    console.log(s.lastIndexOf('a', 2)); // => 0 :从位置2(第3个字符处)开始往前查找

    4.6 localeCompare(value) :实例与参数进行比较,返回比较结果
    参数:

    ①value {string} :需比较的字符串

    返回值:

    0 :实例比参数大

    1 :实例与参数相等

    -1 :实例比参数小

    示例:

    var s='abc';
    console.log(s.localeCompare('ab')); // => 1 :实例比参数大
    console.log(s.localeCompare('abc')); // => 0 :实例与参数相等
    console.log(s.localeCompare('abd')); // => -1 :实例比参数小

    4.7 match(regexp) :使用正则表达式进行匹配查找
    参数:

    ①regexp {regexp} :正则表达式,eg:/d+/

    返回值:

    根据正则表达式是否带属性’g',返回不同的结果;若没匹配,就返回 {null}:

    ①正则表达式不带属性’g',执行一次匹配,返回{单个匹配}结果对象,对象包含以下属性:

    数组序号:表示匹配结果,0为匹配文本,1为从做到右第1个圆括号匹配结果,2为第二个圆括号,依此类推

    index属性:表示匹配文本在匹配源的开始位置

    input属性:表示匹配源

    ②正则表达式带属性’g',执行全局匹配,找到字符串所有匹配对象,返回一个{字符串数组}:数组元素包含string中的每一个匹配对象,不包含正则表达式括号内的字串,也不提供index和input属性。

    示例:

    // 1.单个匹配
    var s = 'a1b2c3d4';
    var mc = s.match(/d+/); // => 获取第一个正则匹配的结果
    if (mc != null) {
        console.log(mc.index); // => 1 :匹配结果在匹配源的起始位置
        console.log(mc.input) // => a1b2c3d4 :匹配源
        console.log(mc[0]); // => 1 :获取匹配到的结果
    }
    // 2.全局匹配
    var mcArray = s.match(/d+/g); // => 获取全部正则匹配的数字
    if (mcArray != null) {
        for (var i = 0,len=mcArray.length; i < len; i++) {
            var mc=mcArray[i];
            console.log(mc); // => 1,2,3,4 :获取匹配到的结果
        }
    }
    // 3.带括号的匹配
    s = 'a1b2c3d4';
    mc = s.match(/[a-z]([1-9])/); // => 获取第一个正则匹配的结果
    if (mc != null) {
        console.log(mc.index); // => 0 :匹配结果在匹配源的起始位置
        console.log(mc.input) // => a1b2c3d4 :匹配源
        console.log(mc[0]); // => a1 :序号0表示匹配到的结果
        console.log(mc[1]); // => 1 :序号1表示第一个括号内的子匹配结果
    }

    4.8 replace(regexp, replaceStr) :替换正则表达式匹配的子串,并返回替换后的字符串
    参数:

    ①regexp {regexp} :正则表达式。eg:/d+/

    ②replaceStr {string | function} :

    1)若是字符串,表示替换的字符串,匹配到字串都替换成此字符串;

    字符串中的$字符有特殊的含义:

    $1,$2 … $99 :表示①参从左到右圆括号的匹配子项

    $& :表示整个①参匹配的子项

    $$ :美元符号

    2)若是函数,表示每个匹配结果都调用此函数,函数的唯一参数为匹配结果,并返回一个替换结果。

    返回值:

    {string} 返回一个替换后的字符串

    示例:

    var oldStr = 'a1b2c3d4';
    // 1.正则匹配到【所有】数字,替换成:','逗号
    var newStr = oldStr.replace(/d+/g, ',');
    console.log(newStr); // => a,b,c,d,
    // 2.正则匹配到【所有】数字,替换成:匹配结果 + ','逗号
    newStr = oldStr.replace(/d+/g, '$&,');
    console.log(newStr); // => a1,b2,c3,d4,
    // 3.正则匹配到【所有】数字,每个匹配结果都调用函数,并返回替换后的结果
    newStr = oldStr.replace(/d+/g, function (word) {
        if (word % 2 == 0) {
            return '偶';
        }
        return '奇';
    });
    console.log(newStr); // => a奇b偶c奇d偶

    4.9 search(regexp) :返回查找正则表达式第一个匹配的位置
    参数:

    ①regexp {regexp} :正则表达式。eg:/d+/

    返回值:

    {int} 返回第一个匹配的结果的位置;若没找到匹配结果返回-1

    示例:

    console.log( 'abcd'.search(/d+/) ); // => -1 :没有找到数字
    console.log( 'abcd1234'.search(/d+/) ); // => 4 :位置序号为4,返回第一个数字的位置

    4.10 slice(start, |end):返回从字符串start位置到end前一个位置的子串
    参数:

    ①start {int} :子串提取的开始位置索引(包括此位置的字符)。

    若数字为负,表示从字符串尾部开始计算。如:-1表示倒数一个字符串,-2表示倒数第二个字符。

    ②end {int} 可选:子串提取的结束位置索引(不包括此位置的字符)。

    若数字为负,表示从字符串尾部开始计算。如:-1表示倒数一个字符串,-2表示倒数第二个字符。

    若省略此参数,返回从start位置到结束的所有字符。

    注意:

    子串的提取顺序是从左到有,若start索引位置大于end索引位置,将返回一个空字符串。

    返回值:

    {string} 返回从字符串start位置到end前一个位置的子串。

    示例:

    var s = 'abcdefg';
    console.log( s.slice(1) ); // bcdefg :省略end参数,结束位置为末尾
    console.log( s.slice(1, 3) ); // bc :返回从位置序号1到位置序号2(end前一个位置)的子串
    console.log( s.slice(-3) ); // efg :返回从倒数第三个开始到末尾的所有字符
    console.log( s.slice(-3, -1) ); // ef :返回从倒数第三个开始到第二个(end前一个位置)的所有字符

    4.11 split(delimiter, |arrayLength) :将字符串按照某种分隔符切分成一个由字符串组成的数组并返回
    参数:

    ①delimiter {regexp | string} :指定的分隔符,可以为正则表达式或字符串。

    ②arrayLength {int} 可选 :分割数组的长度。若省略,返回所有分割的子串。

    注意:

    若分隔符在字符串的第一个或最后一个,将添加一个空字符串到返回的数组。

    返回值:

    { string[] } 返回一个由字符串组成的数组。

    示例:

    console.log( 'a,b,c,d,e'.split(',') ); // => ["a", "b", "c", "d", "e"]
    console.log( ',a,b,c,d,e,'.split(',') ); // => ["", "a", "b", "c", "d", "e", ""] :分隔符在最前或最后面,会添加一个空字符串
    console.log( 'a,b,c,d,e'.split(',',3) ); // => ["a", "b", "c"] :返回前3个分割的子串
    console.log( 'a1b2c3d4e'.split(/d/) ); // => ["a", "b", "c", "d", "e"] :将数字来做为分隔符

    4.12 substr(start, |wordLength):返回从字符串start位置开始计算到wordLength个长度的子串
    参数:

    ①start {int} :子串提取的开始位置索引(包括此位置的字符)。

    若数字为负,表示从字符串尾部开始计算。如:-1表示倒数一个字符串,-2表示倒数第二个字符。

    ②wordLength {int} 可选 :提取字符的长度。若省略此参数,返回从start位置到结束的所有字符。

    返回值:

    {string} 返回提取的字符串

    示例:

    ar s = 'abcdefg';
    onsole.log( s.substr(0) ); // =>  abcdefg :省略第二个参数,返回从位置序号0开始,一直到最后的字符
    onsole.log( s.substr(0, 3) ); // => abc :返回从位置序号0开始,计数3个字符
    onsole.log( s.substr(2, 4) ); // => cdef :返回从位置序号2开始,计数4个字符
    onsole.log( s.substr(-2, 3) ); // fg :返回从倒数第二个字符串开始,计数3个(超过字符长度,就只返回可统计的字符)

    4.12 substr(start, |wordLength):返回从字符串start位置开始计算到wordLength个长度的子串
    参数:

    ①start {int} :子串提取的开始位置索引(包括此位置的字符)。

    若数字为负,表示从字符串尾部开始计算。如:-1表示倒数一个字符串,-2表示倒数第二个字符。

    ②wordLength {int} 可选 :提取字符的长度。若省略此参数,返回从start位置到结束的所有字符。

    返回值:

    {string} 返回提取的字符串

    示例:

    ar s = 'abcdefg';
    onsole.log( s.substr(0) ); // =>  abcdefg :省略第二个参数,返回从位置序号0开始,一直到最后的字符
    onsole.log( s.substr(0, 3) ); // => abc :返回从位置序号0开始,计数3个字符
    onsole.log( s.substr(2, 4) ); // => cdef :返回从位置序号2开始,计数4个字符
    onsole.log( s.substr(-2, 3) ); // fg :返回从倒数第二个字符串开始,计数3个(超过字符长度,就只返回可统计的字符)

    4.13 substring(start, |end) :返回从字符串start位置到end前一个位置的子串
    参数:

    ①start {int} :子串提取的开始位置索引(包括此位置的字符)。数字不能为负数,若为负数按0来处理

    ②end {int} 可选:子串提取的结束位置索引(不包括此位置的字符)。数字不能为负数,若为负数按0来处理

    返回值:

    {string} 返回从字符串start位置到end前一个位置的子串。

    示例:

    var s = 'abcdefg';
    console.log( s.substring(0) ); // =>  abcdefg :省略end参数,返回从位置序号0开始,一直到最后的字符
    console.log( s.substring(0, 3) ); // => abc :返回从位置序号0开始到位置序号2(②参的前一个)的字符
    console.log( s.substring(2, 4) ); // => cd :返回从位置序号2开始到位置序号3(②参的前一个)的字符
    console.log( s.substring(-3, 3) ); // abc :参数若为负,就按数字0来处理,所以此参数实际返回位置序号0到位置序号3的字符

    4.14 toUpperCase() :将字符串转换为大写并返回

    4.15 toUpperCase() :将字符串转换为小写并返回

    4.16 trim() :移除字符串开头和结尾处的空白字符并返回

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    Destoon 模板存放规则及语法参考

    Destoon系统常量与变量

    Destoon系统目录文件结构说明

    Destoon 系统安装指南

    Destoon会员公司主页模板风格添加方法

    Destoon 二次开发入门

    Microsoft 将于 2026 年 10 月终止对 Windows 11 SE 的支持

    Windows 11 存储感知如何设置?了解Windows 11 存储感知开启的好处

    Windows 11 24H2 更新灾难:系统升级了,SSD固态盘不见了...

    小米路由器买哪款?Miwifi热门路由器型号对比分析

    IT头条

    Synology 对 Office 套件进行重大 AI 更新,增强私有云的生产力和安全性

    01:43

    StorONE 的高效平台将 Storage Guardian 数据中心占用空间减少 80%

    11:03

    年赚千亿的印度能源巨头Nayara 云服务瘫痪,被微软卡了一下脖子

    12:54

    国产6nm GPU新突破!砺算科技官宣:自研TrueGPU架构7月26日发布

    01:57

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    技术热点

    如何删除自带的不常用应用为windows 7减负

    MySQL中多表删除方法

    改进的二值图像像素标记算法及程序实现

    windows 7 32位系统下手动修改磁盘属性例如M盘修改为F盘

    windows 7中怎么样在家庭组互传文件

    Linux应用集成MySQL数据库访问技巧

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。