字元串對象
1. 定義方式
var str = new String("stringObject");
var str1 = 'string';
console.log(typeof (str));//object
console.log(str1)//string
字元串對象基本與字元串沒有差別,寫成字元串對象,隻是為了更好的操作字元串唯一的差別就是用typeof判斷類型的時候字元串顯示的是’string’而字元串對象為’object’
2. length屬性
var str = new String("stringObject");
console.log(str.length);
str.length=10;//不報錯,但修改無效
console.log(str.length);
length的寫法為字元串名.length根據上面例子的結果,我們可以知道字元串的length屬性與數組的length屬性是不同的,字元串的length是不可改變的。也就是說是隻讀的。
注意:空格或符号都算是一個元素,都是算在長度中的。
3. 字元的通路
var str = new String("stringObject");
console.log(str[0]);//字元串[索引]
console.log(str[13])//如果超出範圍 輸出 undefined
console.log(str.charAt(0))//charAt方法
console.log(str.charAt(13))//如果超出範圍 輸出空字元串
字元串對象通路有兩種方式,一種為字元串名[索引],另一種為字元串名.charAt(索引)
字元串的索引起始位置與數組一緻,都是從0開始。
兩種方式隻有1點不同,那就是在對參數超出索引範圍的輸出上,字元串名[索引]的輸出為undefined,而charAt方法的輸出值為空字元串
4. 字元的查找
字元串對象查找的兩個方法
第一個方法:字元串名.indexOf(字元串名,開始位置)
功能:從前向後在字元串中查找一個字元串
傳回值:如果找到傳回索引,找不到傳回-1
var str = new String("stringObjectstr");
console.log(str.indexOf('str',3))//在str中找'str'由于起始位置為索引=3,是以它找的後面的'str'
console.log(str.indexOf('AD'));//找不到AD是以輸出為-1
第二個方法:字元串名.lastIndexOf(字元串名,開始位置)
功能:從後向前在字元串中查找一個字元串
傳回值:如果找到傳回索引,找不到傳回-1
var str = new String("stringObjectstr");
console.log(str.lastIndexOf('str'))//從後向前查
console.log(str.lastIndexOf('str',3))//根據結果可知3為從索引為3的位置開始向前查找
console.log(str.lastIndexOf('AD'));//找不到是以輸出-1
注意:lastIndexOf方法的起始位置也是索引值的位置,例如起始位置為3的話,就是從索引值為3的元素開始向後查找,包括3.也就是包括起始位置
5. 字元的替換
替換的方法:字元串名.replace(‘字元串’,‘要替換的字元串’)
var str = new String("stringObjectstr哈哈 哈哈");
str.replace('哈哈', 'haha');//字元串對象一旦建立就不能修改
console.log(str);
var a = str.replace('哈哈', 'haha');//是以,我們把它賦給了一個新的值
console.log(a);
我們可以看到,我們首先運作replace方法,然後輸出str字元串,但是str字元串沒有任何改變。這裡并不能說我們錯了,因為
字元串對象一旦建立就不能修改,跟字元串對象的length屬性一樣
注意:第一個參數為字元串是隻能替換第一個比對的字元
6. 字元串的截取
字元串截取的三個方法
第一個方法:字元串名.substring(開始位置,結束位置)
功能:截取字元串
傳回值:傳回新的字元串
var str = new String("stringObjectstr哈哈 哈哈");
var a=str.substring(0,3);//從0截取到3,但不包括3
var b=str.substring(3,0);//3>0 3和0 會互換
var c=str.substring(-1,5);//-1會被當成0
console.log(a)
console.log(b)
console.log(c)
substring是從開始位置截取到結束位置,但不包括結束位置
substring如果開始位置的索引值比結束位置的索引值大,那麼,開始位置的值會與結束位置的互換
substring的參數如果為負數的話,會被當成0;
第二個方法:字元串名.substr(開始位置,截取個數)
功能:從開始位置截取一定個數的字元串,預設的話,一直截取到最後
傳回值:傳回新的字元串
var str = new String("stringObjectstr哈哈 哈哈a");
var a=str.substr(0,3);//從0開始,截取3個值
var b=str.substr(0);//截取個數沒有的話,預設截取到最後
var c=str.substr(21);//開始位置超出字元串對象的長度是為空字元串
var d=str.substr(-1);//從後向前截取1個值
console.log(a)
console.log(b)
console.log(c)
console.log(d)
substr是從開始位置截取個數
substr如果開始位置超出字元串對象的長度是為空字元
substr截取個數沒有的話,預設截取到最後
substr參數為負數時從後向前截取個數
第三個方法:字元串名.slice(開始位置,結束位置)
功能:截取字元串
傳回值:傳回新的字元串
var str = new String("stringObjectstr哈哈 哈哈a");
var a=str.slice(0,3);//從0截取到3,但不包括3
var b=str.slice(3,0);//3>0 傳回空字元串
var c=str.slice(0,30);//沒有結束位置是,預設截取到最後
var d=str.slice(-1);//從後向前截取1個值
console.log(a)
console.log(b)
console.log(c)
console.log(d)
slice是從開始位置截取到結束位置,但不包括結束位置
slice如果開始位置的索引值比結束位置的索引值大,那麼,會傳回空字元串
slice結束位置超出範圍,按預設值處理
substr參數為負數時從後向前截取個數
6. 字元串的分割
var 變量名=字元串名.split(分割符)
功能:截取字元串
傳回值:将字元串按照分隔符進行切分,切分後的
每一部分,都是數組的一部分
//字元串分割
var str='aaa,bbb,ccc'
var array=str.split(',');
console.log(array)