// 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 "<"; case ">": return ">"; case """: return """; case "&": return "&"; } }); } 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() 比较两个字符串编码