摘要:如果小于的長(zhǎng)度,那返回拼接的字符串用拼在前面以達(dá)到的長(zhǎng)度,如果必要的話,重復(fù)參數(shù)目標(biāo)長(zhǎng)度。如果小于的長(zhǎng)度,那么返回用來(lái)拼接的字符串。的值為統(tǒng)一化這個(gè)方法把給定的統(tǒng)一為特定的某種格式。
String作為JS里面最常用的數(shù)據(jù)類型,我好像沒(méi)有好好地總結(jié)過(guò),所以偶爾有些不常用的,細(xì)節(jié)的知識(shí)點(diǎn)還是不是100%的自信,希望寫篇文章來(lái)鞏固一下。文章主要分為一下幾部分:
1:創(chuàng)建一個(gè)字符串的3種方法以及區(qū)別
2:字符串的常用屬性
3:字符串的常用方法
4:一些易犯的錯(cuò)誤
接下來(lái)就從前到后來(lái)梳理一下:
1:創(chuàng)建一個(gè)字符串的3種方法以及區(qū)別創(chuàng)建一個(gè)字符串的常用方法有:
1: let a = "x"; //字符串字面量的方式 2: let b = String("x"); //利用全局的String對(duì)象生成 3: let c = new String("x"); //創(chuàng)建一個(gè)String對(duì)象
以上的三種方法中,第三種是創(chuàng)建了一個(gè)對(duì)象,第一種和第二種都是創(chuàng)建一個(gè)string類型的數(shù)據(jù),如果對(duì)a,b,c分別調(diào)用typeof結(jié)果為:
typeof a; //"string" typeof b; //"string" typeof b; //"object"
我們暫且把以上的第一種和第二種叫‘原始字符串’,把第三種叫做‘字符串對(duì)象’。原始字符串和字符串對(duì)象在遇到eval()方法的時(shí)候,也表現(xiàn)得不一樣:
eval(new String("2 + 2")); // returns a String object containing "2 + 2" eval("2 + 2"); // returns 4
當(dāng)然我們可以對(duì)字符串對(duì)象調(diào)用valueOf方法,得到其對(duì)應(yīng)的原始字符串:
eval(new String("2 + 2").valueOf()); // returns 42:字符串的常用屬性
1: length
通俗地說(shuō),length屬性返回一個(gè)字符串的字符個(gè)數(shù),JavaScript采用UTF-16編碼,實(shí)際上length屬性就是返回一個(gè)字符串有多少個(gè)UTF-16編碼。
‘a(chǎn)bcd’.length; //43: 字符串的常用方法
1: 獲取字符串特定位置的字符
1:string.charAt(index); //返回某位的字符 2:string.charCodeAt(index); //返回某位上的字符的utf-16編碼 3:string.codePointAt(pos); //返回某位上的Unicode point值
example:
1: "ABC".charAt(0); // 65 2: "ABC".charCodeAt(0); //65 3: "ABC".codePointAt(0); //65 4: "uD800uDC00".codePointAt(0); // 65536
2: 字符串拼接
1:string.concat(string1[, string2, ..., stringN]);
1: 返回一個(gè)新字符串,此方法對(duì)原字符串沒(méi)有影響 2: 非string類型的參數(shù)會(huì)先轉(zhuǎn)為string類型再拼接
example:
1: "abc".concat("xx"); //"abcxx" 2: "".concat(...["a", "b", "c"]); //"abc" 3: "".concat([]): //"" 4: "".concat(true); // "true" 5: "".concat(4, 5); //"45"
2:string.padEnd(targetLength, padString)
用padString拼在string的后面達(dá)到targetLength的長(zhǎng)度,如果有必要的話會(huì)重復(fù)padString
參數(shù):
targetLength: 目標(biāo)長(zhǎng)度。如果小于string的長(zhǎng)度,那返回string padString: 拼接的字符串
example:
1: "abc".padEnd(1); // "abc" 2: "abc".padEnd(7, "foo"); "abcfoof"
3: string.padStart(targetLength, padString)
用padString拼在string前面以達(dá)到targetLength的長(zhǎng)度,如果必要的話,重復(fù)padString
參數(shù):
targetLength: 目標(biāo)長(zhǎng)度。如果小于string的長(zhǎng)度,那么返回string padString: 用來(lái)拼接的字符串。如果省略,則用空字符串。
example:
1: "abc".padStart(7, "foo"); //"foofabc" 2: "abc".padStart(1);// "abc" 3: "abc".padStart(7); " abc"
4: string.repeat(count)
對(duì)string重復(fù)count次數(shù)之后返回一個(gè)新字符串
參數(shù):
count: 重復(fù)的次數(shù) count必須是0到正無(wú)窮之間的有限的次數(shù),負(fù)數(shù)或者無(wú)窮大的數(shù)會(huì)拋出exception;如果count是0,則返回空字符串
example:
1: "abc".repeat(2); // "abcabc" 2: "abc".repeat(0); //"" 3: "abc".repeat(-1);// Uncaught RangeError: Invalid count value 4: "abc".repeat(1/0);//Uncaught RangeError: Invalid count value
3: 邏輯判斷的方法
1:string.endsWith(subString, length); //是否以xx結(jié)束?
參數(shù):
subString: 子字符串 length: 原字符串某個(gè)位置作為尾部(字符串第一位是1,不是0)。length可以省略。
example:
1: "abcd".endsWith("d"); //true 2: "abcd".endsWith("b"); //fasle 3: "abcd".endsWith("b", 2); //true
2: string.includes(subString, index); //是否包含xx?
參數(shù):
subString: 是否包含的子字符串 index: 從元字符串的那個(gè)位置開始(第一位是0, 不是1)
example:
1: "abcd".includes("a"); // true 2: "abcd".includes("a", 1); // false 3: "abcd".includes("a", 0);// true
4: 返回?cái)?shù)字的方法
1:string.indexOf(subString, fromIndex);
返回第一次遇到substring的位置,如果找不到,返回-1
參數(shù):
subString:要查找的子字符串 fromIndex:從原字符串哪個(gè)位置開始找,默認(rèn)從0開始
example:
1: "abcdefg".indexOf("d"); // 3 2: "abcdefg".indexOf("d", 3); // 3 3: "abcdefg".indexOf("d", 4); // -1
2: string.lastIndexOf(subString, fromIndex)
返回最后一次遇到subString的坐標(biāo),找不到的話返回-1
參數(shù):
subString:要查找的子字符串 fromIndex:從哪個(gè)坐標(biāo)開始往后(backwards)找,默認(rèn)為最后一位的坐標(biāo)(string.length -1).
example:
1: "012345".lastIndexOf("3", 2); // -1 2: "012345".lastIndexOf("3", 3); // 3 3: "012345".lastIndexOf("3", 5); // 3
5:比較
1:string.localeCompare(string2[,locales[, options]])
string與string2比較,如果string在string2前面則返回負(fù)數(shù),后面則返回正數(shù),相等返回0。
locale是場(chǎng)所,區(qū)域的意思,所以localeCompare是在特定場(chǎng)合(不同的語(yǔ)言等)下的比較。這些特定的場(chǎng)合可以由參數(shù)locales和options設(shè)置。
關(guān)于localeCompare請(qǐng)參考MDN
6:匹配
1:string.match(regexp);
參數(shù):
regexp: 正則表達(dá)式。
如果沒(méi)有此參數(shù)的話,match()會(huì)返回一個(gè)空Array([])。
如果給了此參數(shù),string有匹配的話,會(huì)返回一個(gè)Array, 第一個(gè)元素是匹配到的完整字符串,接下來(lái)的項(xiàng)是匹配大括號(hào)里面的內(nèi)容得到到的結(jié)果。
example:
var str = "For more information, see Chapter 3.4.5.1"; var re = /see (chapter d+(.d)*)/i; var found = str.match(re); found的值為:["see Chapter 3.4.5.1", "Chapter 3.4.5.1", ".1", index: 22, input: "For more information, see Chapter 3.4.5.1", groups: undefined]
7: 統(tǒng)一化
1:string.normalize([form])
這個(gè)方法把給定的string,統(tǒng)一為特定的某種Unicode格式。
背景:Unicode允許你對(duì)同一個(gè)字符采用不用的字節(jié)來(lái)編碼,如果遇到某些需要根據(jù)字節(jié)來(lái)比較的情況,那對(duì)于不同編碼方式的字符,那這時(shí)候就會(huì)出問(wèn)題。所以,對(duì)于這種情況,可以先把字符都轉(zhuǎn)為統(tǒng)一的編碼方式再比較。
參數(shù):form
form可選的值有: "NFC", "NFD", "NFKC", "NFKD", 分別的意思是:
NFC: Normalization Form Canonical Composition NFD: Normalization Form Canonical Decomposition NFKC: Normalization Form Compatibility Composition NFKD: Normalization Form Compatibility Decomposition
其中:
Composition(NFC和NFKC)用盡可能少的字節(jié)來(lái)代表字符 Decomposition(NFD和NFKD)用字符拆開,用每一部分來(lái)代碼字符。例如á被分解為a和′ Canonical (NFC和NFD)把連字作為單個(gè)字符,比如? Compatibility (NFKC和NFKD)把連字拆分開,比如?被拆分為o+e
example:
var str = "u1E9Bu0323"; str.normalize("NFD"); // "u017Fu0323u0307" str.normalize("NFKC"); // "u1E69"
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/93725.html
摘要:但是在使用運(yùn)算符時(shí),在這兩種情況下的工作方式是不同的。在中,數(shù)組不是基本類型,它的存在僅僅是一個(gè)糖衣語(yǔ)法,它其實(shí)是類的實(shí)例。然而,對(duì)于算數(shù)運(yùn)算符和表現(xiàn)的為數(shù)字。課外作業(yè)檢查其他的瀏覽器兼容性。 在 stackoverflow 上有人提問(wèn):arrays - Why does [1,2] + [3,4] = 1,23,4 in JavaScript? 問(wèn)題 我想將一個(gè)數(shù)組追加到另一個(gè)數(shù)...
摘要:但是在使用運(yùn)算符時(shí),在這兩種情況下的工作方式是不同的。在中,數(shù)組不是基本類型,它的存在僅僅是一個(gè)糖衣語(yǔ)法,它其實(shí)是類的實(shí)例。然而,對(duì)于算數(shù)運(yùn)算符和表現(xiàn)的為數(shù)字。注意用戶自定義對(duì)象進(jìn)行運(yùn)算不一定總產(chǎn)生一個(gè)字符串結(jié)果。 問(wèn)題 我想將一個(gè)數(shù)組追加到另一個(gè)數(shù)組的后面,于是我在 firebug 編寫如下代碼: [1,2] + [3,4] 但是,出乎意料,它卻輸出了: 1,23,4 而沒(méi)有輸出我期...
摘要:本文轉(zhuǎn)載自眾成翻譯譯者亂發(fā)小生鏈接原文學(xué)習(xí)怎樣傳遞信息從到是一個(gè)非常難的事情。原因在于和兩種語(yǔ)言類型之間的巨大差異。你可以在這里查看所有的類型。這兩個(gè)組件松散和嚴(yán)格的表明一系列函數(shù)接收不同類型的參數(shù),,,和和它們的返回值。 本文轉(zhuǎn)載自:眾成翻譯譯者:亂發(fā)小生鏈接:http://www.zcfy.cc/article/3360原文:https://nodeaddons.com/type-...
摘要:如果為假值,不傳或者傳入,函數(shù)都會(huì)返回但是,傳入這個(gè)值是完全有可能的,所以這種判斷形勢(shì)是不正確的或者使用來(lái)判斷也可以原始類型優(yōu)于封裝類型對(duì)象擁有六個(gè)原始值基本類型布爾值,數(shù)字,字符串,,和對(duì)象。 作為一個(gè)前端新人,多讀書讀好書,夯實(shí)基礎(chǔ)是十分重要的,正如蓋樓房一樣,底層穩(wěn)固了,才能越壘越高。從開始學(xué)習(xí)到現(xiàn)在,基礎(chǔ)的讀了紅寶書《JavaScript高級(jí)程序設(shè)計(jì)》,犀牛書《JavaScri...
摘要:本文的思想源自于在上的演講。我收集這些例子的主要目的是將它們整理并清楚理解它們的原理。著主要是因?yàn)榇罄ㄌ?hào)也是函數(shù)定義語(yǔ)法的一部分。自從年雙十一正式上線,累計(jì)處理了億錯(cuò)誤事件,得到了金山軟件等眾多知名用戶的認(rèn)可。 譯者按: JavaScript有很多坑,經(jīng)常一不小心就要寫bug。 原文: What the f*ck JavaScript? 譯者: Fundebug 為了保證可讀性...
摘要:能夠根據(jù)返回語(yǔ)句自動(dòng)推斷出返回值類型,因此我們通常省略它。定義的函數(shù)類型接口就像是一個(gè)只有參數(shù)列表和返回值類型的函數(shù)定義。可索引類型具有一個(gè)索引簽名,它描述了對(duì)象索引的類型,還有相應(yīng)的索引返回值類型。 showImg(https://segmentfault.com/img/remote/1460000010018621?w=640&h=280); 本文首發(fā)在我的個(gè)人博客:http:/...
閱讀 1001·2021-09-30 09:58
閱讀 2828·2021-09-09 11:55
閱讀 2000·2021-09-01 11:41
閱讀 990·2019-08-30 15:55
閱讀 3349·2019-08-30 12:50
閱讀 3494·2019-08-29 18:37
閱讀 3294·2019-08-29 16:37
閱讀 2010·2019-08-29 13:00