// 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() 比较两个字符串编码