字符串的定义
方式一 var str = '亲'; //基本类型
定义了一个字符串变量str,内容为 '亲'
方式二:var str = new String('hello'); //引用类型
定义一个字符串变量str,内容为hello,
注意:此刻str为引用类型(object对象)
用new产生的变量都是引用类型的变量,也叫对象
方式三:var str = String('hello');
基本类型:string, number, boolean, undefined,null等
引用类型/对象: Array , Date, Object, String, Function等
new String和String的区别
var s1 = new String(‘hello world’);
var s2 = String(‘hello world’);
console.log(typeof s1); //object
console.log(typeof s2); //string
当String()和元素符new一起使用, 那么String()是作为构造函数使用的,它返回的是一个新创建的String对象. (构造函数后面课程会讲)
当不用new运算符调用String()时,它只是转换成原始的字符串,并返回转换后的值.
字符串的属性
length:表示字符串的长度
例如: var str = 'how are you';
console.log(str.length);
console.log(str[0]);//获取字符串中对应下标的字符
注意: ECMAScript 中的字符串是不可变的; 也就是说,字符串一旦创建,它们的值就不能改变. 例如: var str = “亲,包邮哦”;
str[0] = “唉”; //不会改变
如果要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量.
var str = “Hello”;
str = str+” world!”;
字符串的方法(函数)
str.charAt(3): 获取下标为3的字符
str.charCodeAt(3): 获取下标为3的字符的编码(ASCII码)
String.fromCharCode(94); ASCII编码转换成字符
该方法是String的静态方法,所以用String调用,
如:var str = String.fromCharCode(98,99); //可传入多个参数
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)
str.concat(); 连接字符串
例如: var str1 = “hello”;
var str2 = str1.concat(“ world”);
字符串的查找方法
str.indexOf(“abc”); 查找字符串第一次出现的位置, 如果没找到则返回-1
例如: var str = “abcdabcd”;
var subStr = “bcd”;
var index = str.indexOf(subStr);
str.lastIndexOf(“abc”); 查找字符串最后一次出现的位置, 如果没找到则返回-1
例如: var index = str.lastIndexOf(“abc”);
str.search(); 正则匹配 (返回第一次出现的位置)
例如: var str = “Abcdabcd”;
var index = str.search(/abc/gi);
注: g表示进行全局匹配,i表示匹配的时候忽略大小写
str.replace(); 替换字符串
例如: var str = “how are Are are you!”;
var newStr = str.replace(“are”, “old are”);
这里的替换只能执行一次,不能够进行全局匹配,如果需要全局匹配,则应使用正则表达式: str.replace(/are/gi, "old are")