字符串的創建
1.new String()
let stringObj = new String("123")
console.log(stringObj) // object
這個是字符串對象,儘量不要這麼做!!!!
2.創建基本的字符串值
let stringStr = "123"
console.log(stringStr) // string
字符串的方法
1.查找方法
a)charAt(index)
作用:返回指定位置的字符。
注意:字符串中第一個字符的下標是 0。如果參數 index 不在 0 與 string.length 之間,該方法將返回一個空字符串。
let str = "1123"
console.log(str.charAt(0)) // "1"
console.log(str.charAt(5)) // ""
b)charCodeAt(index)
作用:返回在指定的位置的字符的 Unicode 編碼。
注意:字符串中第一個字符的下標是 0。如果 index 是負數,或大於等於字符串的長度,則 charCodeAt() 返回 NaN。
let str = "1123"
console.log(str.charCodeAt(0)) // 49
console.log(str.charCodeAt(5)) // NaN
console.log(str.charCodeAt(5)) // NaN
c)formCharCode(Unicode,Unicode,Unicode)
作用:用Unicode 編碼創建一個字符串。
參數:一個或多個 Unicode 值,即要創建的字符串中的字符的 Unicode 編碼。
注意:該方法是 String 的靜態方法,字符串中的每個字符都由單獨的數字 Unicode 編碼指定。它不能作爲您已創建的 String 對象的方法來使用。因此它的語法應該是 String.fromCharCode(),而不是myStringObject.fromCharCode()。該方法返回一個字符串,而不是一個 String 對象。
console.log(String.fromCharCode(189, 43, 190, 61)); // "½+¾="
String.fromCharCode(65, 66, 67); // "ABC"
String.fromCharCode(0x2014); // "—"
String.fromCharCode(0x12014); // "—"; 數字 1 被剔除並忽略
String.fromCharCode(8212); // "—"; 8212 是 0x2014 的十進制表示
2.位置方法
a)indexOf(searchValue,fromIndex)
作用: indexOf() 方法可返回某個指定的字符串值在字符串中首次出現的位置。如果沒有找到匹配的字符串則返回 -1。
注意:indexOf() 方法區分大小寫。searchvalue 必需。規定需檢索的字符串值。fromIndex 可選的整數參數。規定在字符串中開始檢索的位置。它的合法取值是 0 到 string Object.length - 1。如省略該參數,則將從字符串的首字符開始檢索。
語法: string.indexOf(searchvalue,start)
let str="Hello world, welcome to Beijing.";
console.log(str.indexOf("welcome")); // 13
b)lastIndexOf(searchValue,fromIndex)
作用: lastIndexOf() 方法可返回一個指定的字符串值最後出現的位置,如果指定第二個參數 start,則在一個字符串中的指定位置從後向前搜索。
注意:該方法將從後向前檢索字符串,但返回是從起始位置 (0) 開始計算子字符串最後出現的位置。 看它是否含有字符串。
開始檢索的位置在字符串的 start 處或字符串的結尾(沒有指定 start 時)。
如果沒有找到匹配字符串則返回 -1
lastIndexOf() 方法是區分大小寫的!
let str="I am from runoob,welcome to runoob site.";
console.log(str.lastIndexOf("runoob")); // 28
3.匹配方法
a)match(regexp)
作用: 方法檢索返回一個字符串匹配正則表達式的結果。
參數:regexp一個正則表達式對象。如果傳入一個非正則表達式對象,則會隱式地使用 new RegExp(obj) 將其轉換爲一個 RegExp 。如果你沒有給出任何參數並直接使用match() 方法 ,你將會得到一 個包含空字符串的 Array :[""] 。
返回值: 如果使用g標誌,則將返回與完整正則表達式匹配的所有結果,但不會返回捕獲組。
如果未使用g標誌,則僅返回第一個完整匹配及其相關的捕獲組(Array)。 在這種情況下,返回的項目將具有如下所述的其他屬性。
let str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
let regexp = /[A-E]/gi;
console.log(str.match(regexp));// ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']
console.log(str.match()); // [""]
b)replace(regexp|substr, newSubStr|function)
作用: replace() 方法返回一個由替換值(replacement)替換部分或所有的模式(pattern)匹配項後的新字符串。模式可以是一個字符串或者一個正則表達式,替換值可以是一個字符串或者一個每次匹配都要調用的回調函數。如果pattern是字符串,則僅替換第一個匹配項。
參數:
regexp (pattern)
一個RegExp 對象或者其字面量。該正則所匹配的內容會被第二個參數的返回值替換掉。
substr (pattern)
一個將被 newSubStr 替換的 字符串。其被視爲一整個字符串,而不是一個正則表達式。僅第一個匹配項會被替換。
newSubStr (replacement)
用於替換掉第一個參數在原字符串中的匹配部分的字符串。該字符串中可以內插一些特殊的變量名。參考下面的使用字符串作爲參數。
function (replacement)
一個用來創建新子字符串的函數,該函數的返回值將替換掉第一個參數匹配到的結果。參考下面的指定一個函數作爲參數。
function replacer(match, p1, p2, p3, offset, string) {
// p1 is nondigits, p2 digits, and p3 non-alphanumerics
return [p1, p2, p3].join(' - ');
}
let newString = 'abc12345#$*%'.replace(/([^\d]*)(\d*)([^\w]*)/, replacer);
console.log(newString); // abc - 12345 - #$*%
let re = /apples/gi;
let str = "Apples are round, and apples are juicy.";
let newstr = str.replace(re, "oranges");
console.log(newstr);// oranges are round, and oranges are juicy.
c)str.split([separator[, limit]])
作用: split() 方法使用指定的分隔符字符串將一個String對象分割成子字符串數組,以一個指定的分割字串來決定每個拆分的位置。
參數:
separator
指定表示每個拆分應發生的點的字符串。separator 可以是一個字符串或正則表達式。 如果純文本分隔符包含多個字符,則必須找到整個字符串來表示分割點。如果在str中省略或不出現分隔符,則返回的數組包含一個由整個字符串組成的元素。如果分隔符爲空字符串,則將str原字符串中每個字符的數組形式返回。
limit
一個整數,限定返回的分割片段數量。當提供此參數時,split 方法會在指定分隔符的每次出現時分割該字符串,但在限制條目已放入數組時停止。如果在達到指定限制之前達到字符串的末尾,它可能仍然包含少於限制的條目。新數組中不返回剩下的文本。
注意:如果使用空字符串(“)作爲分隔符,則字符串不是在每個用戶感知的字符(圖形素集羣)之間,也不是在每個Unicode字符(代碼點)之間,而是在每個UTF-16代碼單元之間。這會摧毀代理對。
let names = "Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand ";
console.log(names); // Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand
let re = /\s*(?:;|$)\s*/;
let nameList = names.split(re);
console.log(nameList); // [ "Harry Trump", "Fred Barney", "Helen Rigby", "Bill Abel", "Chris Hand", "" ]
let myString = "Hello World. How are you doing?";
let splits = myString.split(" ", 3);
console.log(splits); // ["Hello", "World.", "How"]
4.拼接方法
a)str.concat(str2, [, ...strN])
作用: concat() 方法將一個或多個字符串與原字符串連接合並,形成一個新的字符串並返回。
返回值: 一個新的字符串,包含參數所提供的連接字符串。
注意:用 " + " 運算符來進行字符串的連接運算通常會更簡便一些。
let hello = 'Hello, '
console.log(hello.concat('Kevin', '. Have a nice day.')) // Hello, Kevin. Have a nice day.
let greetList = ['Hello', ' ', 'Venkat', '!']
"".concat(...greetList) // "Hello Venkat!"
"".concat({}) // [object Object]
"".concat([]) // ""
"".concat(null) // "null"
"".concat(true) // "true"
"".concat(4, 5) // "45"
5.根據下標截取子串方法
a)str.slice(beginIndex[, endIndex])
作用: slice() 方法提取某個字符串的一部分,並返回一個新的字符串,且不會改動原字符串。
參數:
beginIndex
從該索引(以 0 爲基數)處開始提取原字符串中的字符。如果值爲負數,會被當做 strLength + beginIndex 看待,這裏的strLength 是字符串的長度(例如, 如果 beginIndex 是 -3 則看作是:strLength - 3)
endIndex
可選。在該索引(以 0 爲基數)處結束提取字符串。如果省略該參數,slice() 會一直提取到字符串末尾。如果該參數爲負數,則被看作是 strLength + endIndex,這裏的 strLength 就是字符串的長度(例如,如果 endIndex 是 -3,則是, strLength - 3)。
返回值: 返回一個從原字符串中提取出來的新字符串
注意:
一個新的字符串。包括字符串 stringObject 從 start 開始(包括 start)到 end 結束(不包括 end)爲止的所有字符。
String 對象的方法 slice()、substring() 和 substr() (不建議使用)都可返回字符串的指定部分。slice() 比 substring() 要靈活一些,因爲它允許使用負數作爲參數。slice() 與 substr() 有所不同,因爲它用兩個字符的位置來指定子串,而 substr() 則用字符位置和長度來指定子串。還要注意的是,String.slice() 與 Array.slice() 相似。
let str1 = 'The morning is upon us.', // str1 的長度 length 是 23。
str2 = str1.slice(1, 8),
str3 = str1.slice(4, -2),
str4 = str1.slice(12),
str5 = str1.slice(30);
console.log(str2); // "he morn"
console.log(str3); // "morning is upon u"
console.log(str4); // "is upon us."
console.log(str5); // ""
let str6 = 'The morning is upon us.';
str6.slice(-3); // "us."
str6.slice(-3, -1); // "us"
str6.slice(0, -1); // "The morning is upon us"
b)str.substring(indexStart[, indexEnd])
作用: substring() 方法返回一個字符串在開始索引到結束索引之間的一個子集, 或從開始索引直到字符串的末尾的一個子集。
參數:start 必需。一個非負的整數,規定要提取的子串的第一個字符在 stringObject 中的位置。stop可選。一個非負的整數,比要提取的子串的最後一個字符在 stringObject 中的位置多 1。如果省略該參數,那麼返回的子串會一直到字符串的結尾。
返回值:一個新的字符串,該字符串值包含 stringObject 的一個子字符串,其內容是從 start 處到 stop-1 處的所有字符,其長度爲 stop 減 start。
說明:substring() 方法返回的子串包括 start 處的字符,但不包括 stop 處的字符。如果參數 start 與 stop 相等,那麼該方法返回的就是一個空串(即長度爲 0 的字符串)。如果 start 比 stop 大,那麼該方法在提取子串之前會先交換這兩個參數。
let anyString = "Mozilla";
// 輸出 "Moz"
console.log(anyString.substring(0,3));
console.log(anyString.substring(3,0));
console.log(anyString.substring(3,-3));
console.log(anyString.substring(3,NaN));
console.log(anyString.substring(-2,3));
console.log(anyString.substring(NaN,3));
// 輸出 "lla"
console.log(anyString.substring(4,7));
console.log(anyString.substring(7,4));
// 輸出 ""
console.log(anyString.substring(4,4));
// 輸出 "Mozill"
console.log(anyString.substring(0,6));
// 輸出 "Mozilla"
console.log(anyString.substring(0,7));
console.log(anyString.substring(0,10));
6.根據長度截取子串
a)str.substr(start[, length])
作用: substr() 方法返回一個字符串中從指定位置開始到指定字符數的字符。
警告: 儘管 String.prototype.substr(…) 沒有嚴格被廢棄 (as in "removed from the Web standards"), 但它被認作是遺留的函數並且可以的話應該避免使用。它並非JavaScript核心語言的一部分,未來將可能會被移除掉。如果可以的話,使用 substring() 替代它.
參數:
start
開始提取字符的位置。如果爲負值,則被看作 strLength + start,其中 strLength 爲字符串的長度(例如,如果 start 爲 -3,則被看作 strLength + (-3))。
length
可選。提取的字符數。
返回值:一個新的字符串,包含從 stringObject 的 start(包括 start 所指的字符) 處開始的 length 個字符。如果沒有指定 length,那麼返回的字符串包含從 start 到 stringObject 的結尾的字符。
提示和註釋:註釋:substr() 的參數指定的是子串的開始位置和長度,因此它可以替代 substring() 和 slice() 來使用。
let str = "abcdefghij";
console.log("(1,2): " + str.substr(1,2)); // "(1,2): bc"
console.log("(-3,2): " + str.substr(-3,2)); // "(-3,2): hi"
console.log("(-3): " + str.substr(-3)); // "(-3): hij"
console.log("(1): " + str.substr(1)); // "(1): bcdefghij"
console.log("(-20, 2): " + str.substr(-20,2)); // "(-20, 2): ab"
console.log("(20, 2): " + str.substr(20,2)); // "(20, 2):"