JavaScript之字符串

一、声明方式

1. 直接赋值

var str = 'hello javascript';

2. 构造函数

var str2 = new String('hello world');

这两种有什么区别呢?

第一种方式只是声明了一个变量,使用typeof str得到的是'string'。而第二种方式则创建了一个String的包装对象,typof str2得到的是’object'。 通过console.log输出

console.log(str); // 'hello world'
console.log(st2); //String {0: "h", 1: "e", 2: "l", 3: "l", 4: "o", 5: " ", 6: "w", 7: "o", 8: "r", 9: "l", 10: "d", length: 11, [[PrimitiveValue]]: "hello world"}

str2中的[[PrimitiveValue]]的值是由str2的toString()方法而来的一个string值。

因为str2是一个对象,所以可以给str2设置属性,而str不可以

str.a = 'barret'
console.log(str.a) //undefined str2.a = 'barret'
console.log(str2.a) //barret

 二、String方法

1. charCodeAt(index): 返回指定位置的Unicode编码。

注释:字符串中第一个字符的下标是 0。如果 index 是负数,或大于等于字符串的长度,则 charCodeAt() 返回 NaN。

var str = 'a';
str.charCodeAt(str[0]); //
str.charCodeAt(str[1]); //NaN

2. charAt(index): 返回指定位置的字符,javascript并没有区别于字符串类型的字符类型,返回的只是长度为1的字符串。

注释:字符串中第一个字符的下标是 0。如果 index 是负数,或大于等于字符串的长度,则 charAt() 返回 ''。

var str = 'a';
str.charAt(0); // 'a'
str.chartAt(1); // ''

3. fromCharCode(code1, code2, ..., codeN): 从Unicode返回字符。参数为一个或多个Unicode值, 用逗号分隔。如果参数为空,则返回空字符串。

注释:fromCharCode为String的静态方法,所以调用为String.fromCharCode(),而不是myStr.fromCharCode();

String.fromCharCode(97,98); // "ab"

4. slice(start[, end]): 方法返回字符串的片段,返回一个新的数组而不是改变原数组。

start下标从0开始的string指定部分起始索引。如果start为负,则将start + length处理, 若相加后start仍未负,则按0处理。

end下标从0开始的string指定部分结束索引。如果start为负,则将end + length处理, 若相加后end仍未负,则按0处理。

var str = 'abcdef';
str.slice(0, 2); // 'ab'
str.slice(0, -1); // 'abcde'
str.slice(0); // 'abcdef'
str.slice(); // 'abcdef'
str.slice(-7, -9); // ''
str.slice(-7, 2); // 'ab' 等同于str.slice(0,2);

5. substring(start, end): 返回字符串的片段,返回一个新的数组而不是改变原数组。

start指定子字符串的起始位置, 该索引从0开始起算。

end指定子字符串的结束位置, 该索引从0开始起算。

注释:substring方法使用start和end两者中较小值作为子符串起点。 如果start或end未NaN或负数则将其替换为0。如果没有第二个参数,则将字符串的长度作为结束位置。

var str = 'abcdef';
str.substring(2, 4); // 'cd' 等同于str.substring(4, 2);
str.substring(-1, 2); // 'ab' 等同于str.substring(0, 2);

6. indexOf(substr, [startIndex]): 返回字符串在String对象内第一次出现在子字符串的位置。如果没有找到,则返回-1。

substr要在String对象中查找的子字符串。

startIndex该整数值指出在String对象内开始查找的索引。

var str = 'abcdef';
str.indexOf('cd', 2); //
str.indexOf('cd', 3); // -1

7. lastIndexOf(substr, [startIndex]): 返回String对象中字符串最后出现的位置, 参数同indexOf。

var str = 'abcdefcdg'
str.lastIndexOf('cd', 6); //
str.lastIndexOf('cd', 5); //

8. search(reExp): 返回与正则表达式查找内容匹配的第一个字符串的位置。

注释:如果没匹配到字符串, 则返回-1,search不执行全局匹配, 忽略标志g和lastIndex属性, 总返回第一个匹配。

var str = 'abcdef';
str.search('cd'); // 2 等同于str.search(/cd/);

9. concat(string1[,string2....]): 返回两个或多个字符串的连接

var str1 = 'abc';
str1.concat('def'); // 'abcdef'

10. split(separator[, limit]): 将一个字符串分割为子字符串, 然后将结果作为字符串返回。

separator可以使字符串货正则表达式对象。如果忽略,则返回包含整个字符串的单一元素数组。

limit用来限制返回数组中的元素个数。

var str = 'ab,cd,ef';
str.split(','); // ['ab', 'cd', 'ef']
str.split(',', 2); // ['ab', 'cd']

 11. replace(param): 字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串,返回一个新的数组而不是改变原数组。

var str = 'abcdef';
var str2 = str.replace('a', '1');
var str3 = str.replace(/bc/, '2');
console.log(str); // 'abcdef'
console.log(str2); // '1bcdef'
console.log(str3); // 'a2def'
上一篇:微软正式开源Blazor,将.NET带回到浏览器


下一篇:eclipse syso 自动补全设置方法