学习篇之String()

        // 3个特殊的引用类型:Boolean,Number,String
        var s1 = "some text";
        var s2 = s1.substr(2,4); // me t
        var s3 = s1.substring(2,4); // me
        var s4 = s1.substring(2,-1); // so 负数为0  
        var s5 = s1.substr(2,-1); // me text
        console.log(s5);

        // 后台自动完成部分
        // (1)创建String类型的一个实例;
        // (2)在实例上调用制定的方法;
        // (2)销毁这个实例;
        // 可以将以上三个步骤想象成了下列ECMAScript;
        var s1 = new String("some text");
        var s2 = s1.substring(2);
        s1 = null;

        // 引用类型与基本包装类型主要区别在于对象的生存期;
        // 基本包装类型 在一行代码执行完后立即被销毁;
        // 引用数据类型 在离开作用域前都一直保存在内存中;
        var col = "red";
        col.color = "bule";
        console.log(col.color); // undefined
        console.log(typeof(col));

        // 将数值转换为字符创
        var num = 10;
        console.log(typeof(num)); // number
        var numStr = num.toFixed(2);
        console.log(typeof(numStr)); // string

        //string类型
        var stringVal = "ceshistring";
        console.log(stringVal.length);    // 11
        console.log(stringVal.charAt(0));    // c   
        // charAt() 接受字符串索引,返回字符串
        console.log(stringVal.charCodeAt(0));    // 99    
        // charCodeAt()    接受字符串索引,返回字符串的字符串编码
        console.log(stringVal[0])    // c     
        // 另一种方法
        // fromCharCode();与charCodeAt() 方法相反  string构造函数本身的一个静态方法
        var abc = String.fromCharCode(49,65,97);
        console.log(abc);

        // 操作字符串的方法
        // concat()
        var stringVal1 = "hello ";
        var result = stringVal1.concat("world","!");    // 可以接受多个参数
        console.log(result);    // hello world!
        console.log(stringVal1);    // hello 

        // slice() 复制  substring() substr()截取字符串 ; 返回一个人新的字符串,并不会修改字符串本身
        var str1 = "html css";
        console.log(str1.slice(1,3));    // tm  (为负数时,字符串的长度+负值)
        console.log(str1.substr(1,3));    // tml
        console.log(str1.substring(1,3));    // tm

        // 字符串位置方法
        // indexOf() 和 lastIndexOf()  搜索字符串,返回字符索引,没有返回-1,索引开始位置
        var url1 = "url(http://localhost:63342/WZDK/uploads/F3.jpg)";
        var index = url1.indexOf("(")+1;
        var lastindex = url1.lastIndexOf(")");
        console.log(url1.substring(index,lastindex));

        var stringVal2 = "asdasdasdasd";
        var positions = [];
        var pos = stringVal2.indexOf("a");
        while(pos > -1){
            positions.push(pos);
            pos = stringVal2.indexOf("a",pos+1);
        }
        console.log(positions);

        // trim()方法 ECMAScript 去除字符串两端的空格;返回一个新字符串,原字符串不会改变;
        var str2 = "  hello  ";
        console.log(str2+"-"+str2.length); //   hello  -9
        var str3 = str2.trim(    );
        console.log(str3+"-"+str3.length); //    hello-5
        
        // 大小写转换 toLowerCase()/toLocaleLowerCase() 小写转换  toUpperCase()/toLocaleUpperCase() 大学转换 
        // 针对特定时区的实现
        var low = "hello A";
        var lowa = low.toUpperCase();
        var lowb = low.toLowerCase();
        console.log(lowa);    // HELLO A
        console.log(lowb);    // hello a

        // 字符串的模式匹配方法
        // match() 本质上调用 RegExp 的 exec()的方法相同。接受一个参数正则表达式或 RegExp 对象。
        // 返回一个数组;
        var text = "cat,bat,sat,fat";
        var pattern = /.at/;
        var matches = text.match(pattern);
        console.log(matches);    // ["cat", index: 0, input: "cat,bat,sat,fat"]
        console.log(matches.index);    // cat
        console.log(matches[0]);    // 0

        // search() 参数同上,返回第一个查找到的索引,没有查到返回-1;
        var sear = text.search(/at/); 
        console.log(sear);    // 1

        // 替换字符串 replace(); 第一个参数可以使RegExp对象或者一个字符串(不会转化正则表达式)
        // 第二个参数可以是一个字符串或函数;
        var text1 = "cat,bat,sat,fat";
        var re1 = text1.replace("at","only");
        console.log(re1);    // conly,bat,sat,fat
        re1    = text1.replace(/at/g,"only"); // 不添加引号
        console.log(re1);    // conly,bonly,sonly,fonly
        re1 = text1.replace(/(.at)/g,"word ($1)");
        console.log(re1);    // word (cat),word (bat),word (sat),word (fat)

        function htmlEscape(text){
            return text.replace(/[<>"&]/g,function(match,pos,originalText){
                switch(match){
                    case "<":
                        return "&lt;";
                    case ">":
                        return "&gt;";
                    case "\"":
                        return "&quot;";
                    case "&":
                        return "&amp;";
                }
            });
        }
        document.write(htmlEscape('<p>"&hello"</p>'));
        console.log(htmlEscape('<p>"&/hello"</p>'));

        // split() 将一个字符串制定分割多个子字符串,保存到一个新的数组中;
        // 第一个参数分隔符可以是字符串,也可以是RegExp对象,第二个用于制定数组的大小
        var colorT = "red,blue,black,yellow";
        var col1 = colorT.split(",");
        console.log(col1);    // ["red","blue","black","yellow"]
        var col2 = colorT.split(",",3); // 超出数组,显示完整数组
        console.log(col2);    // ["red", "blue", "black"]

        // localeCompare() 比较两个字符串编码

 

posted @ 2016-06-22 16:26  月半字  阅读(173)  评论(0编辑  收藏  举报