字符串常用方法及字符串的擴(kuò)展

字符串基礎(chǔ)方法

1.chatAt()

str.chatAt(n)

返回字符串的第n個字符秕重,如果不在 0~str.length-1 之間眯搭,則返回一個空字符串。

const str = '12345';
str.chatAt(1); // 2

2.indexOf()

str.indexOf(substr[, start]);

返回 substr 在字符串 str 中首次出現(xiàn)的位置,從 start 位置開始查找软驰,如果不存在卵洗,則返回-1请唱。start 可以是任意整數(shù),默認(rèn)為0过蹂。如果 start < 0則查找整個字符串(如同傳進(jìn)了0)十绑。如果 start > 字符串的長度 ,則該方法返回-1酷勺,但如果查找的字符串是一個空字符串本橙,此時返回 str.length

var str = "haha";
str.indexOf('a'); // 1
str.indexOf('a', 6); // -1
str.indexOf('a', -1); // 1
str.indexOf('s', 1); // -1
str.indexOf(''); // 0
str.indexOf('', 6); // 4 字符串長度

3.lastIndexOf()

str.lastIndexOf(substr[,start]);

返回 substr 在字符串中最后出現(xiàn)的位置脆诉,如果沒有找到則返回-1甚亭。從該字符串的后面向前查找贷币,從start處開始。start 可以是任意整數(shù)(默認(rèn)是 str.length)亏狰。如果為負(fù)值役纹,則被看作是0,如果 start > str.length 則被看作是 str.length暇唾。

"canal".lastIndexOf("a")   // 3
"canal".lastIndexOf("a",2) // 1
"canal".lastIndexOf("a",0) // -1
"canal".lastIndexOf("x")   // -1
  1. substring()
    方法返回一個字符串在開始索引到結(jié)束索引之間的一個子集, 或從開始索引直到字符串的末尾的一個子集字管。
str.substring(indexStart[, indexEnd])

substring 提取從 indexStartindexEnd(不包括)之間的字符。特別地:

  • 如果 indexStart 等于 indexEnd信不,substring 返回一個空字符串嘲叔。
  • 如果省略 indexEndsubstring 提取字符一直到字符串末尾抽活。
  • 如果任一參數(shù)小于 0 或為 NaN硫戈,則被當(dāng)作 0。
  • 如果任一參數(shù)大于 stringName.length下硕,則被當(dāng)作 stringName.length丁逝。
  • 如果 indexStart 大于 indexEnd,則 substring 的執(zhí)行效果就像兩個參數(shù)調(diào)換了一樣梭姓。
 var 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));

5.slice()
提取一個字符串的一部分霜幼,并返回一新的字符串。

str.slice(beginSlice[, endSlice])誉尖;

beginSlice
從該索引(以 0 為基數(shù))處開始提取原字符串中的字符罪既。如果值為負(fù)數(shù),會被當(dāng)做 sourceLength + beginSlice 看待铡恕,這里的sourceLength 是字符串的長度 (例如琢感, 如果beginSlice 是 -3 則看作是: sourceLength - 3)
endSlice
可選。在該索引(以 0 為基數(shù))處結(jié)束提取字符串探熔。如果省略該參數(shù)驹针,slice會一直提取到字符串末尾。如果該參數(shù)為負(fù)數(shù)诀艰,則被看作是sourceLength + endSlice柬甥,這里的 sourceLength 就是字符串的長度(例如,如果 endSlice 是 -3其垄,則是, sourceLength - 3)苛蒲。

var str1 = 'The morning is upon us.';
var str2 = str1.slice(4, -2); // morning is upon u
str.slice(-3);     // returns 'us.'
str.slice(-3, -1); // returns 'us'
str.slice(0, -1);  // returns 'The morning is upon us'
  1. substr()
    substr() 方法返回一個字符串中從指定位置開始到指定字符數(shù)的字符。
str.substr(start[, length])

start 是一個字符的索引捉捅。首字符的索引為 0撤防,最后一個字符的索引為 字符串的長度減去1虽风。substrstart 位置開始提取字符棒口,提取 length 個字符(或直到字符串的末尾)寄月。
如果 start 為正值,且大于或等于字符串的長度无牵,則 substr 返回一個空字符串漾肮。
如果 start 為負(fù)值,則 substr 把它作為從字符串末尾開始的一個字符索引茎毁。如果 start 為負(fù)值且 abs(start) 大于字符串的長度克懊,則 substr 使用 0 作為開始提取的索引。注意負(fù)的 start 參數(shù)不被 Microsoft JScript 所支持七蜘。
如果 length 為 0 或負(fù)值谭溉,則 substr 返回一個空字符串。如果忽略 length橡卤,則 substr 提取字符扮念,直到字符串末尾。

var 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):
  1. replace()
    replace() 方法返回一個由替換值替換一些或所有匹配的模式后的新字符串碧库。模式可以是一個字符串或者一個正則表達(dá)式, 替換值可以是一個字符串或者一個每次匹配都要調(diào)用的函數(shù)柜与。
str.replace(regexp|substr, newSubStr|function);

regexp 一個RegExp對象或者其字面量。改正則所匹配的內(nèi)容會被第二個參數(shù)的返回值替掉嵌灰。
substr 一個被 newSubStr 替換字符串弄匕。其被視為一整個字符串,而不是一個正則表達(dá)式沽瞭。
newSubStr 用于替換第一個參數(shù)在原字符串中的匹配部分的字符串迁匠。該字符串中可以內(nèi)插一些特殊的變量名。
function 一個用來創(chuàng)建新字符串的函數(shù)驹溃,該函數(shù)的返回值將替代掉第一個參數(shù)匹配的結(jié)果柒瓣。
返回值:返回一個部分或全部由替代模式所取代的新字符串。

// 使用正則表達(dá)式忽略大小寫
var str = 'Twas the night before Xmas...';
var newstr = str.replace(/xmas/i, 'Christmas');
console.log(newstr);  // Twas the night before Christmas...

var re = /apples/gi;
var str = "Apples are round, and apples are juicy.";
var newstr = str.replace(re, "oranges");

// oranges are round, and oranges are juicy.
console.log(newstr);
  1. search()
    search() 方法執(zhí)行正則表達(dá)式和 String對象之間的一個搜索匹配吠架。regexp 一個正則表達(dá)式對象芙贫。如果傳入一個非正則表達(dá)式對象,則會使用new RegExp(obj)隱式的將其轉(zhuǎn)換為正則表達(dá)式對象傍药。如果匹配成功磺平,則 search() 返回正則表達(dá)式在字符串中首次匹配項的索引。否則拐辽,返回 -1拣挪。
str.search(regexp);

當(dāng)你想要知道字符串中是否存在某個模式(pattern)時可使用 search,類似于正則表達(dá)式的 test 方法俱诸。當(dāng)要了解更多匹配信息時菠劝,可使用 match(會更慢),該方法類似于正則表達(dá)式的 exec 方法睁搭。

  1. match()
str.match(regexp);

當(dāng)一個字符串與正則表達(dá)式匹配時赶诊,match方法檢索匹配項笼平。

參數(shù)regexp是一個正則表達(dá)式對象。如果傳入一個非正則表達(dá)式對象舔痪,則會使用new RegExp(obj)隱式的將其轉(zhuǎn)換為正則表達(dá)式對象寓调。如果未提供參數(shù)直接使用match(),則會返回一個空字符串的數(shù)組:['']锄码。

返回值是array數(shù)組夺英,如果字符串匹配到了表達(dá)式,會返回一個數(shù)組滋捶,數(shù)組的第一項是進(jìn)行匹配的完整的字符串痛悯,后面的項是用圓括號捕獲的結(jié)果。如果沒有匹配到則返回null重窟。

var url = 'http://www.baidu.com?a=1&b=2&c=3';
var reg = /([^?&=]+)=([^?&=])*/g;
var result = url.match(reg);
console.log(result); //["a=1", "b=2", "c=3"]

后續(xù)……

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末灸蟆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子亲族,更是在濱河造成了極大的恐慌炒考,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霎迫,死亡現(xiàn)場離奇詭異斋枢,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)知给,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進(jìn)店門瓤帚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人涩赢,你說我怎么就攤上這事戈次。” “怎么了筒扒?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵怯邪,是天一觀的道長。 經(jīng)常有香客問我花墩,道長悬秉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任冰蘑,我火速辦了婚禮和泌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘祠肥。我一直安慰自己武氓,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著县恕,像睡著了一般东羹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上弱睦,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天百姓,我揣著相機(jī)與錄音渊额,去河邊找鬼况木。 笑死,一個胖子當(dāng)著我的面吹牛旬迹,可吹牛的內(nèi)容都是我干的火惊。 我是一名探鬼主播,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼奔垦,長吁一口氣:“原來是場噩夢啊……” “哼屹耐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起椿猎,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤惶岭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后犯眠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體按灶,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年筐咧,在試婚紗的時候發(fā)現(xiàn)自己被綠了鸯旁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡量蕊,死狀恐怖铺罢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情残炮,我是刑警寧澤韭赘,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站势就,受9級特大地震影響辞居,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蛋勺,卻給世界環(huán)境...
    茶點故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一瓦灶、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抱完,春花似錦贼陶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽烘贴。三九已至,卻和暖如春撮胧,著一層夾襖步出監(jiān)牢的瞬間桨踪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工芹啥, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留锻离,地道東北人。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓墓怀,卻偏偏與公主長得像汽纠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子傀履,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,937評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 前言 最先接觸編程的知識是在大學(xué)里面钓账,大學(xué)里面學(xué)了一些基礎(chǔ)的知識碴犬,c語言,java語言梆暮,單片機(jī)的匯編語言等服协;大學(xué)畢...
    oceanfive閱讀 3,095評論 0 7
  • Javascript有很多字符串的方法,有的人有W3C的API惕蹄,還可以去MDN上去找蚯涮,但是我覺得API上說的不全,...
    頑皮的雪狐七七閱讀 2,167評論 0 2
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,239評論 0 4
  • str.length 返回一個字符串的長度 返回一個字符串的長度 str.charAt(index) 返回字符串中...
    angelwgh閱讀 544評論 0 0
  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line)卖陵,也就是一...
    悟名先生閱讀 4,153評論 0 13