zoukankan      html  css  js  c++  java
  • JS字符串操作总结

    属性:length

    方法:

    match()

    search()

    replace()

    slice() [汉]菜刀,切开

    substring()

    substr()

    split() [汉]分离

    indexOf()

    lastIndexOf()

    charAt()

    charCodeAt()

    fromCharCode()

    //获取字符串字符个数 属性length
    var username = 'mackxu';
    username.length;        //5
    //求一个字符串的字节长度
    //假设:一个英文字符占用一个字节,一个中文字符占用两个字节
    function countStringBytes(str) {
        var len = str.length;        //字符个数
        var bytes = len;            //如果都是单字节字符
        for (var i=0; i<len; i++) {
            if (str.charCodeAt(i)>255)
                bytes ++;            //双字节字符
        }
        return bytes;
    }
    /*
     * 字符串模式匹配方法
     * match(string/pattern) 查找 返回matches数组 与pattern.exec()相同
     * matches数组属性:
     *         index 子字符串在字符串中的位置
     *         input 表示谁应用了这个正则表达式(即原字符串)
     *         matches[0] 匹配到的子字符串
     *         matches[1] 捕获组匹配的字符串
     * 存放匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志 g。
     * 注意:在全局检索模式g下,match()即不提供与子表达式匹配的文本的信息,也不声明每个匹配子串的位置。
     * 
     * search(string/pattern) 参数是字符串时与indexOf()作用一样
     * 返回string中第一个与 regexp 相匹配的子串的起始位置。如果没有找到任何匹配的子串,则返回 -1。
     * replace() 替换
     * split() 字符串转换成数组
     * String.prototype.split() 执行的操作与 Array.prototype.join 执行的操作是相反的。
     */var text = 'cabt, bat, sat';
    var pattern = /.at/;
    var matches = text.match('bat');
    console.log(matches.index);            //6
    console.log(text.indexOf('bat'));    //6
    console.log(text.search('bat'));    //6
    /*
     * 字符串替换
     * replace('old', 'new')
     * replace(pattern, 'new')
     * 第二个参数可以使用的特殊字符
     * $&    RegExp.lastMatch 匹配到的子字符串
     * $`    RegExp.leftContext
     * $'    RegExp.rightContext
     * $n    匹配第n个捕获组子字符串
     * replace(pattern, function(match, pos, oldString){ //... })
     * 函数的参数: 子字符串, 子字符串的位置, 字符串
     */
    var text = 'cat, bat, sat';
    //cAT, bat, sat    只能替换第一个
    var result = text.replace('at', 'AT');
    //cAT, bat, sat
    var result = text.replace(/at/, 'AT');
    //cAT, bAT, sAT 替换全部
    var result = text.replace(/at/g, 'AT');
    //word(cat), word(bat), word(sat)
    var result = text.replace(/(.at)/g, "word($1)");
    //word(, bat, sat), word(, sat), word()
    var result = text.replace(/(.at)/g, "word($')");
    //去掉字符串两边的空格
    String.prototype.trim = function() {
        return this.replace(/(^\s*)|(\s*$)/g, '');
    }
    /*
     * 字符串截取(获取子字符串) 不会修改原字符串
     * slice(start, end) 截取范围[statr, end) 下标从0开始
     * substring(start, end) 截取范围[statr, end)
     * substr(start, length)
     * 当传递的参数是负数时:slice()方法会将是负值的参数与字符串长度相加, 当start>end时返回''
     * substring()方法会将所有负值参数转换为0, 当start>end时返回 [end, start)
     * substr()方法如果第一个参数负值加上字符串长度, 如果第二个参数负值将其替换成0
     */
    var str = 'good work';
    var result = str.slice(-3);            //ork
    var result = str.slice(-3, -5);        //'' start>end
    var result = str.substring(2, 4);    //od
    var result = str.substring(4, 2);    //od [2, 4)
    var result = str.substring(-4, 2);    //go [0, 2)
    var result = str.substring(2, -2);    //go [0, 2) 
    var result = str.substring(-4, -2);    //'' [0, 0) 
    var result = str.substr(-4, 1);        //w  (5, 1)
    var result = str.substr(4, -3);        //'' (4, 0)
    console.log(result);
    /*
     * 字符串转成数组 split()
     * 数组转换成字符串 join()
     */
    var str = 'good work';
    var result = str.split('');            //字符数组
    var result = str.split(/\s+/);        //使用正则做分隔符
    var result = str.split('oo');        //["g", "d work"]
    /*
     * 字符串查找
     * indexOf()
     * lastIndexOf()
     * match()
     * search()
     */
    
    //获取指定位置的字符
    //charAt(i) 返回指定的字符
    //charCodeAt(i) 返回指定字符的字符编码
    
    //fromCharCode() String构造函数的静态方法
    //作用是把字符编码转换成字符
    
    /*
     * 字符串连接
     * concat() String/Array
     * stringObject.concat(stringX,stringX,...,stringX)
     * stringObject.concat(array) array.toString();
     * 使用 " + " 运算符来进行字符串的连接运算通常会更简便一些
     * String.prototype.concat.apply(stringObject, array);
     */
    var arr = ['a', 'b', 'c', 'd'];
    var str = '';
    str = str.concat(arr);        //a,b,c,d
    str = String.prototype.concat.apply(str, arr);    //abcd
    /*
     * 字符串比较
     * localeCompare() 字符串与字符串参数比较 返回数值
     * str1.localeCompare(str2)
     */

      

  • 相关阅读:
    java学习第六天
    java学习第五天
    java学习第四天
    java学习第三天
    java学习第二天
    java学习第一天
    性能测试学习第十三天_性能测试报告编写
    性能测试学习第十二天_性能分析
    性能测试学习第十一天_Analysis
    性能测试学习第十天_controller
  • 原文地址:https://www.cnblogs.com/mackxu/p/2839312.html
Copyright © 2011-2022 走看看