相關(guān)文章
博客原文
數(shù)據(jù)類型總結(jié)——概述
數(shù)據(jù)類型總結(jié)——String(字符串類型)
數(shù)據(jù)類型總結(jié)——Number(數(shù)值類型)
數(shù)據(jù)類型總結(jié)——Boolean類型(布爾類型)
數(shù)據(jù)類型總結(jié)——null和undefined
數(shù)據(jù)類型總結(jié)——基本包裝類型
數(shù)據(jù)類型總結(jié)——Array(數(shù)組類型)
大綱
前言
1、String字符串類型的相關(guān)知識(shí)
2、字符串的創(chuàng)建
3、字符串的比較
4、轉(zhuǎn)換字符串
5、字符串的基本操作——連接字符串
6、字符串的基本屬性和方法
前言
數(shù)據(jù)類型是每一種語言都需要掌握的內(nèi)容,掌握每一種數(shù)據(jù)類型的使用是掌握這門語言必不可少的。而我也對數(shù)據(jù)類型寫了一系列的博客,其中包含了對某一數(shù)據(jù)類型的概念的認(rèn)識(shí)和理解以及常使用的方法。以下就是我對String類型的一些認(rèn)識(shí)和理解,希望能對讀者有所幫助。并且這是關(guān)于ES6之前的一篇,之后還會(huì)有一篇關(guān)于ES6對字符串的新增的知識(shí)的總結(jié)。
1、String字符串類型的相關(guān)知識(shí)
1.1、String類型用于表示由零或多個(gè)16位Unicode字符組成的字符序列,即字符串。字符串可由單引號(hào)或者雙引號(hào)表示。
1.2、字符串由零個(gè)或多個(gè)字符構(gòu)成。字符包括字母、數(shù)字、標(biāo)點(diǎn)符號(hào)和空格。字符串必須放在引號(hào)里——單引號(hào)和雙引號(hào)都允許使用。
1.3、如果字符串包含雙引號(hào)字符,就應(yīng)該把整個(gè)字符串放在單引號(hào)中;如果字符串包含單引號(hào)字符,就應(yīng)該把整個(gè)字符串放在雙引號(hào)中;如果執(zhí)意要使用一種引號(hào)來包括字符串,那么可以使用轉(zhuǎn)義字符(escaping)來使得字符串中的內(nèi)容不被解釋成這個(gè)字符串的結(jié)束標(biāo)志。在JavaScript語言中,對字符進(jìn)行轉(zhuǎn)義需要用到反斜杠字符。
2、字符串的創(chuàng)建
通常情況下創(chuàng)建一個(gè)字符串對象可以通過方法var string1 = "Hello",而不是 var string1 = new String("Hello"),通過直接復(fù)制字符串的賦值的方式創(chuàng)建字符串的對象相對于直接new String對象來說要簡潔的多,而JavaScript會(huì)自動(dòng)幫助我們將字符串轉(zhuǎn)換成字符串對象。
3、字符串的比較
字符串的比較是將會(huì)比較實(shí)際的字符串大小是否相等,而字符串對象的比較比較的是兩個(gè)對象的引用是否相等。
4、轉(zhuǎn)換字符串
要把一個(gè)值轉(zhuǎn)換為一個(gè)字符串有兩種方式:
4.1、就是使用幾乎每個(gè)值都有的toString()方法,這個(gè)返回唯一要做的就是返回相應(yīng)值的字符串表現(xiàn)。
var num = 10;
console.log(num.toString()); //10
console.log(num.toString(2)); //1010
console.log(num.toString(8)); //12
console.log(num.toString(10)); //10
console.log(num.toString(16)); //a
4.2、在不知道要轉(zhuǎn)換的值是不是null或undefined的情況下,還可以使用轉(zhuǎn)型函數(shù)String([value]),這個(gè)函數(shù)能夠?qū)⑷魏晤愋偷闹缔D(zhuǎn)換為字符串。
String(12);
5、字符串的基本操作——連接字符串
字符串的連接只需要將兩個(gè)字符串通過“+”連接即可,字符串和數(shù)值通過“+”連接起來,那么數(shù)值就會(huì)自動(dòng)轉(zhuǎn)換成字符串的數(shù)據(jù),從而變成兩個(gè)字符串連接。
var concatString = "Hello " + "Paul";
6、字符串的基本屬性和方法
6.1、length屬性
length屬性:返回字符串中字符的個(gè)數(shù),即字符串的長度
6.2、concat()
str.concat([string1[,string2...]])
concat方法返回字符串值,該值包含了兩個(gè)或多個(gè)提供的字符串的連接。
string1,string2要和所有其他指定的字符串進(jìn)行連接的String對象或文字。
var str = "ABCDEF";
var newStr = str.concat("ABCDEF","ABC");
console.log(str); //ABCDEF
console.log(newStr); //ABCDEFABCDEFABC
6.3、charAt()
strObj.charAt(index)
charAt方法返回指定索引位置處的字符。如果超出有效范圍的索引值返回空字符串。
index想得到的字符的基于零的索引。有效值是0與字符串長度減一之間的值。
var str='abcd';
var a=str.charAt(0);
console.log(a); //'a'
console.log(str); //'abcd'
6.4、charCodeAt()
strObj.charCodeAt(index)
charCodeAt方法返回一個(gè)整數(shù),代表指定位置字符的Unicode編碼。
index將被處理字符的從零開始計(jì)數(shù)的編號(hào)。有效值為0到字符串長度減1的數(shù)字。 如果指定位置沒有字符,將返回NaN。
var str = "ABC";
str.charCodeAt(0); //65
6.5、slice()
strObj.slice(start[,end])
slice方法返回字符串的片段。
start下標(biāo)從0開始的strObj指定部分其實(shí)索引。如果start為負(fù),將它作為length+start處理,此處length為字符串的長度。
end小標(biāo)從0開始的strObj指定部分結(jié)束索引。如果end為負(fù),將它作為length+end處理,此處length為字符串的長度。
var str = "ABCDEF";
str.slice(2,4); //CD
6.6、indexOf()和lastIndexOf()
查找子串在字符串中的位置
用于一個(gè)字符串中是否包含某個(gè)子串(其它字符串)
傳參:
1、需要查找的子串
2、從哪個(gè)位置查找(可選)indexOf()的默認(rèn)值是0,而lastIndexOf()默認(rèn)是length-1
返回參數(shù):
返回查找到的子串在字符串中的位置,如果沒有找到則返回-1
var string1 = "strkiudstrkknstskjustrkui";
var indof = string1.indexOf('str');
var indofNum = string1.indexOf('str',2);
var lasindeof = string1.lastIndexOf('str');
var lasindeofNum = string1.lastIndexOf('str',15);
console.log(indof);//0
console.log(indofNum);//7
console.log(lasindeof);//19
console.log(lasindeofNum);//7
6.7、substr()
strObj.substr(start[,length])
substr方法返回一個(gè)從指定位置開始的指定長度的子字符串。
start所需的子字符串的起始位置。字符串中的第一個(gè)字符的索引為0。
length在返回的子字符串中應(yīng)包括的字符個(gè)數(shù)。
var str = "ABCDEF";
str.substr(2,4); //CDEF
6.8、substring()
strObj.substring(start,end)
substring方法返回位于String對象中指定位置的子字符串。
start指明子字符串的起始位置,該索引從0開始起算。
end指明子字符串的結(jié)束位置,該索引從0開始起算。
substring方法使用start和end兩者中的較小值作為子字符串的起始點(diǎn)。如果start或end為NaN或者為負(fù)數(shù),那么將其替換為0。
var str = "ABCDEF";
str.substring(2,4); // 或 str.substring(4,2); //CD
6.9、toUpperCase() / toLocaleUpperCase()
toUpperCase方法返回一個(gè)字符串,該字符串中的所有字母都被轉(zhuǎn)換為大寫字母。
var str = "ABCabc";
var newStr = str.toUpperCase();
console.log(str); //ABCabc
console.log(newStr);//ABCABC
6.10、 toLowerCase() / toLocaleLowerCase()
toLowerCase方法返回一個(gè)字符串,該字符串中的字母被轉(zhuǎn)換成小寫。
var str = "ABCabc";
var newStr = str.toLowerCase();
console.log(str); //ABCabc
console.log(newStr);//abcabc
6.11、trim()
trim():刪除前置及后綴的所有空格,然后返回副本結(jié)果
var str = " ABCa bc ";
var newStr = str.trim();
str = str + "111111";
newStr = newStr + "111111";
console.log(str); // ABCa bc 111111
console.log(newStr); //ABCa bc111111
6.12、split()
strObj.split([separator[,limit]])
將一個(gè)字符串分割為子字符串,然后將結(jié)果作為字符串?dāng)?shù)組返回。
根據(jù)某種分割標(biāo)志符將一個(gè)字符串拆分成由子串組成的數(shù)組
separator字符串或 正則表達(dá)式 對象,它標(biāo)識(shí)了分隔字符串時(shí)使用的是一個(gè)還是多個(gè)字符。如果忽略該選項(xiàng),返回包含整個(gè)字符串的單一元素?cái)?shù)組。
limit該值用來限制返回?cái)?shù)組中的元素個(gè)數(shù)。
var str = "AA BB CC DD EE FF";
alert(str.split(" ",3));//結(jié)果: AA,BB,CC
6.13、replace()
replace()方法:將制定的字符串中的子串替換成指定的另一子串,replace()方法將返回一個(gè)新的字符串,不會(huì)改變原有的字符串。
var myString = "The event will be in May, the 21st of June";
myCleanedUpString = myString.replace("May","June");
console.log(myCleanedUpString);//The event will be inJune, the 21st of June
6.14、search()
strObj.search(reExp)
search()方法:查找指定子串在字符串中的位置
search方法返回與正則表達(dá)式查找內(nèi)容匹配的第一個(gè)字符串的位置。
reExp包含正則表達(dá)式模式和可用標(biāo)志的正則表達(dá)式對象。
var str = "ABCDECDF";
str.search("CD"); // 或 str.search(/CD/i); //結(jié)果:2
6.15、match()
match()方法:返回一個(gè)數(shù)組,數(shù)組中的每一個(gè)元素即為根據(jù)傳入的模式字符串匹配到的子串。
var myString = "1997, 1998, 1999, 2000, 2001, 2002";
myMatchArray = myString.match("2000");
console.log(myMatchArray.length);//1
6.16、String對象其它方法的使用:anchor()、blink()、italics()、link() 、fontcolor()
/*
anchor() 生產(chǎn)錨點(diǎn)
blink() 為元素添加blink標(biāo)簽
charAt() 返回指定索引位置處的字符。
charCodeAt() 返回一個(gè)整數(shù),代表指定位置上字符的 Unicode 編碼。
fontcolor() 把帶有 COLOR 屬性的一個(gè) HTML <FONT> 標(biāo)記放置在 String 對象中的文本兩端
indexOf() 返回 String 對象內(nèi)第一次出現(xiàn)子字符串的字符位置
italics() 把 HTML <I> 標(biāo)記放置在 String 對象中的文本兩端。
link() 把一個(gè)有 HREF 屬性的 HTML 錨點(diǎn)放置在 String 對象中的文本兩端。
replace() 返回根據(jù)正則表達(dá)式進(jìn)行文字替換后的字符串的復(fù)制
split() 切割
Substr() 截取子串
toUpperCase() 轉(zhuǎn)大寫
toLowerCase 轉(zhuǎn)小寫
*/
document.write("第五章".anchor("five")+"<br/>");
document.write("第五章".blink()+"<br/>");
document.write("abc".charAt(1)+"<br/>");
document.write("abc".charCodeAt(1)+"<br/>"); //chatCodeAt返回的是索引值對應(yīng)的字符的碼值。
document.write("第六章".fontcolor("red")+"<br/>"); //fontcolor() 給字符串添加font標(biāo)簽,
//然后設(shè)置color的屬性值。
document.write("abchellohehehello".indexOf("hello")+"<br/>"); //返回指定字符串第一次出現(xiàn)的索引值。
document.write("第五章".italics()+"<br/>"); //給文本添加一個(gè)i標(biāo)簽,把文本內(nèi)容設(shè)置成斜體。
document.write("傳智".link("http://www.itcast.cn")+"<br/>"); // 給文本添加一個(gè)a標(biāo)簽,
document.write("明天我們講xml".replace("xml","DOM編程")+"<br/>");
var str = "我們-大家-好";
var arr = str.split("-");
for(var index = 0 ; index<arr.length ; index++){
document.write(arr[index]+",");
}
document.write("<br/>");
document.write("abc".toUpperCase()+"<br/>"); //轉(zhuǎn)大寫
document.write("ABC".toLowerCase()+"<br/>"); //轉(zhuǎn)小寫