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