JS字符串

字符串

  双引号""或单引号''包围的都是字符串。

创建字符串

  直接用单引号或双引号包围。
var str1="我的过去";
console.log(typeof str1) //string
var str2='我的过去';
console.log(typeof str2) //string
var str3='';
console.log(typeof str3) //string
var str4="[1,2,3,4]";
console.log(typeof str4) //string

字符串长度 .length

  字符串的 length 是不能修改的,但数组的能修改
var str="abcd";
console.log(str.length) //4 字符串长度
var str2="我的过去";
console.log(str2.length) //4 字符串长度,中文的也是4,并不占两个字符长度
str2.length=5
console.log(str2.length) //4 字符串的 length 是不能修改的,但数组的能修改

获取指定位置的字符 charAt()

  括号里需要传入要获取字符的下标,从0到str.length-1。或不在这个范围,返回空。
var str="我的过去";
console.log(str[0]) //我
console.log(str.charAt(1)) //的
console.log(str.charAt(9)) //返回空

返回字符的十进制 Unicode 编码 charCodeAt()

  括号里输入要处理的字符串索引(下标),返回的是十进制 unicode 哟。
a-z 97-122
A-Z 65-90
0-9 48-57
空格 32
回车 12
左 37
上 38
右 39
下 40
var str="daysme";
console.log(str.charCodeAt(0)) //返回100 , d 字母的 十进制 unicode 码是 100 。

把 unicode 编码转为字符 string.formCharCode()

  可以输入多个值。
console.log(String.fromCharCode(100)) //d
console.log(String.fromCharCode(25105,30340,36807,21435)) //我的过去

从头开始检索指定字符串 indexOf()

  第一个参数是要查找的相应字符;
第二个参数是表示要查找的开始位置(包含输入的位置)。
如果没有传入第二个参数,默认从头开始找。
找到时返回找到字符的下标,找不到返回-1。
var str="我的过去,我的过去,我的过去"
console.log(str.indexOf("过")) //2
console.log(str.indexOf("过去")) //2 ,也是2,因为它找的是一个整体
console.log(str.indexOf("我")) //0 ,不指定开始位置时从0开始找
console.log(str.indexOf("我",4)) //5 ,从第4个位置开始找“我”,找到的下标是5
console.log(str.indexOf("我",5)) //5 ,从第5个位置开始找“我”,也包含位置5
console.log(str.indexOf("你")) //-1 ,找不到即返回 -1

从后面开始检索指定字符串 lastIndexOf()

  与 indexOf() 相同,但他是从后面开始查找。返回一个指定字符最后出现的位置。
var str="我的过去,我的过去"
console.log(str.lastIndexOf("我")) // 5 ,从后往前检索,为什么结果是 5 不是 3 不是 4 ?
//因为返回到的是字符下标,下标都是从左到右 0 开始的。

截取字符串 substring(start,end)

  start 开始位置(包含)
end 结束位置(不包含)。
返回一个新的字符串。
注意: substring 的 strong 并不写成大写的 Strong 。
参数不能是负值。
var str="我的过去"
console.log(str.substring(0)) //我的过去
console.log(str.substring(0,2)) //我的

截取字符串 slice()

  传入的参数也是开始位置和结束位置。
与 substring 的不同是 slice 可以是负值。
如果为负值时把最后一个作为开始。
比如 -1 指字符串的最后一个字符。
如果参数错误,返回空。
var str="我的过去"
console.log(str.slice(0)) //我的过去
console.log(str.slice(0,2)) //我的
console.log(str.slice(-3,-1)) //的过
console.log(str.slice(-3,0)) //返回空,错误。

分割字符串 split()

  参数1表示开始分割的标签符;
参数2表示允许分割的最大长度,一般不设置。
var str="a/b/c/d/e/f";
console.log(str.split("/")); //["a", "b", "c", "d", "e", "f"]
var str="a/b/c/d/e/f";
console.log(str.split("b")); //["a/", "/c/d/e/f"]
var str="a/b/c/d/e/f";
console.log(str.split()); //["a/b/c/d/e/f"] 整个转为数组
console.log(str.split("我的过去")); //["a/b/c/d/e/f"] 同上,不能以传入的参数分割时,以忽略参数处理,整个转为数组
console.log(str.split("")); //["a", "/", "b", "/", "c", "/", "d", "/", "e", "/", "f"] 每项都分开了

字符串颠倒

// 把字符串颠倒 "abcdef" -> "fedcba"
// 一
var str="abcdef";
var str2="";
for(i=0;i<str.length;i++){
  str2+=str[str.length-i-1];
}
console.log(str2)
// 二
console.log(str.split("").reverse().join(""));

转换为大写 toUpperCase()

var str="Hello World!"
console.log(str.toUpperCase()); //HELLO WORLD!

转换为小写 toLowerCase()

var str="Hello World!"
console.log(str.toLowerCase()); //hello world!
 
上一篇:关于C++数组的几点讨论


下一篇:MapReduce深度分析(一)