學(xué)會這招,輕松搞定JS刪除字符串最后一個(gè)字符
2025-01-08 10:01:25
一、引言

在 JavaScript 編程的世界里,我們常常會遇到需要對字符串進(jìn)行各種精細(xì)操作的場景,而刪除字符串的最后一個(gè)字符就是其中頗為常見的需求。比如說,當(dāng)我們在處理用戶輸入的內(nèi)容、拼接動態(tài)生成的 SQL 語句,又或是格式化特定格式的文本數(shù)據(jù)時(shí),精準(zhǔn)地去掉字符串末尾的那個(gè)字符,能讓數(shù)據(jù)更加符合我們的預(yù)期。接下來,就為大家詳細(xì)介紹幾種在 JavaScript 中實(shí)現(xiàn)這一操作的巧妙方法。
二、常用方法大揭秘
(一)substring () 方法
首先登場的是substring()方法,它就像是一把精準(zhǔn)的剪刀,能夠按照我們指定的范圍截取字符串。這個(gè)方法接受兩個(gè)參數(shù),起始索引和結(jié)束索引(結(jié)束索引對應(yīng)的字符不包含在內(nèi))。當(dāng)我們想要刪除字符串的最后一個(gè)字符時(shí),只需將起始索引設(shè)為 0,結(jié)束索引設(shè)為字符串長度減 1 即可。例如:在上述代碼中,substring(0, str.length - 1)表示從字符串的開頭(索引 0)開始,截取到倒數(shù)第二個(gè)字符為止,從而巧妙地刪除了最后一個(gè)字符,控制臺輸出的結(jié)果將會是 “JavaScript 很有”。
(二)slice () 方法
slice()方法和substring()方法有些類似,同樣是通過指定起始索引和結(jié)束索引來截取字符串片段。不過,它的一個(gè)小優(yōu)勢在于支持負(fù)索引,這讓我們的代碼可以更加簡潔。當(dāng)我們使用slice(0, -1)時(shí),就等同于告訴程序從字符串開頭截取到倒數(shù)第二個(gè)字符,輕松實(shí)現(xiàn)刪除最后一個(gè)字符的目的。示例如下:這里,str.slice(0, -1)會把字符串 “學(xué)習(xí)前端開發(fā)” 的最后一個(gè)字符 “發(fā)” 去掉,輸出 “學(xué)習(xí)前端開”,是不是很方便呢?
(三)substr () 方法
再看看substr()方法,它的特點(diǎn)是依據(jù)起始位置和要提取的字符長度來操作字符串。想要刪除最一個(gè)字符,我們把起始位置設(shè)為 0,長度設(shè)為字符串長度減 1 就行。就像這樣:在這個(gè)例子里,substr(0, str.length - 1)從字符串的起始處開始,提取了除最后一個(gè)字符之外的所有字符,最終輸出 “探索編程世”,達(dá)到了我們刪除最后字符的需求。
三、進(jìn)階技巧拓展
(一)RTrim () 方法
除了上述的經(jīng)典方法,還有一些進(jìn)階技巧值得我們掌握。比如,RTrim()方法原本常用于刪除字符串末尾的空格,但其實(shí)它也能用來刪除指定的字符。只不過在使用時(shí),需要先將字符串轉(zhuǎn)換為字符串對象,然后調(diào)用RTrim()方法并傳入要刪除的字符作為參數(shù)。示例代碼如下:這里,str.toString().RTrim(',')先把str轉(zhuǎn)換為字符串對象,再將末尾的逗號刪除,最終輸出 “數(shù)據(jù),要精準(zhǔn)處理”。
(二)TrimEnd () 方法
TrimEnd()方法與RTrim()類似,不過它在處理多個(gè)要刪除的字符時(shí)更加靈活。它接受一個(gè)字符數(shù)組作為參數(shù),能夠一次性刪除字符串末尾的多個(gè)指定字符。假設(shè)我們有一個(gè)字符串,末尾有多個(gè)冗余的符號,就可以這樣處理:在這個(gè)例子中,str.TrimEnd(['#'])會把字符串末尾的所有 “#” 號都刪掉,輸出 “信息”。要是遇到更復(fù)雜的場景,比如要刪除不同類型的多個(gè)字符,TrimEnd()方法同樣能輕松應(yīng)對。
(三)巧用 slice 和 join 方法
另外一種巧妙的方法是結(jié)合slice和join來操作。首先將字符串轉(zhuǎn)換為數(shù)組,利用slice方法刪除最后一個(gè)元素,再用join方法把數(shù)組轉(zhuǎn)換回字符串。像這樣:這里,str.split('')把字符串拆分成字符數(shù)組,slice(0, -1)刪除最后一個(gè)字符對應(yīng)的數(shù)組元素,最后join('')將處理后的數(shù)組重新組合成字符串,輸出 “知識的海洋無邊無”。這種方法在某些特定場景下,代碼的可讀性會更強(qiáng),也方便后續(xù)對字符數(shù)組進(jìn)行更多復(fù)雜的操作。
四、方法對比與選擇
了解了這么多種刪除字符串最后一個(gè)字符的方法,大家可能會有些糾結(jié),到底該選用哪一種呢?其實(shí),不同的方法在代碼簡潔度、性能表現(xiàn)以及適用場景上都存在一些差異。從代碼簡潔度來看,slice(0, -1)的寫法無疑是最為簡潔明了的,一眼就能看出是要截取到倒數(shù)第二個(gè)字符,非常直觀。而substring(0, str.length - 1)和substr(0, str.length - 1)相對來說就稍顯冗長一些。在性能方面,對于大多數(shù)日常的簡單操作,這些方法的性能差異幾乎可以忽略不計(jì)。但如果是在處理大量字符串?dāng)?shù)據(jù)的循環(huán)中,substring()方法在某些瀏覽器環(huán)境下可能會有略微的性能優(yōu)勢,因?yàn)樗?JavaScript 標(biāo)準(zhǔn)方法,瀏覽器對其優(yōu)化較好。不過,隨著 JavaScript 引擎的不斷發(fā)展,這種差異也在逐漸縮小。適用場景上,如果只是單純地刪除字符串末尾的一個(gè)字符,上述幾種基本方法都能勝任,任選其一即可。但要是遇到需要批量處理多個(gè)字符串,或者在復(fù)雜的字符串拼接、格式化過程中,slice()方法結(jié)合其他數(shù)組方法(如前文提到的結(jié)合join方法)會讓代碼的邏輯性更強(qiáng),便于維護(hù)。例如在處理一組用戶輸入的標(biāo)簽字符串,要統(tǒng)一去除末尾可能存在的逗號時(shí),這種方法就能大顯身手。而RTrim()和TrimEnd()方法則在需要精準(zhǔn)刪除特定字符或字符集時(shí)表現(xiàn)出色,特別是當(dāng)字符串末尾存在不確定數(shù)量的特定冗余字符時(shí),它們能快速清理,確保數(shù)據(jù)的準(zhǔn)確性。
五、實(shí)戰(zhàn)演練
光說不練假把式,下面給大家?guī)讉€(gè)小任務(wù),來鞏固一下所學(xué)的知識。任務(wù)一:假設(shè)有一個(gè)存儲用戶標(biāo)簽的數(shù)組userTags = ["技術(shù)控", "閱讀愛好者", "運(yùn)動達(dá)人", "美食探索者", "旅行家"],我們要將這些標(biāo)簽拼接成一個(gè)字符串,并用逗號分隔,同時(shí)去掉最后一個(gè)逗號。任務(wù)二:從后端獲取到一個(gè)文件路徑字符串filePath = "/documents/reports/quarterly_report_2023.csv",需要把文件名的后綴(即最后一個(gè) “.” 及之后的字符)去掉,只保留文件名稱部分。任務(wù)三:給定一個(gè)聊天記錄字符串chatRecord = "用戶A: 你好,今天過得怎么樣?\n用戶B: 還不錯,你呢?\n用戶A: 我也挺好,謝謝!\n",要去除最后一行末尾的換行符 “\n”。大家可以嘗試用不同的方法來解決這些問題,對比一下哪種方法在不同場景下最為順手,相信通過實(shí)踐,大家對 JavaScript 字符串操作的掌握會更加扎實(shí)。如果在練習(xí)過程中有任何疑問或者心得,歡迎隨時(shí)在評論區(qū)交流分享哦!
六、總結(jié)
今天給大家詳細(xì)介紹了在 JavaScript 中刪除字符串最后一個(gè)字符的多種方法,從基礎(chǔ)的substring()、slice()、substr(),到進(jìn)階的RTrim()、TrimEnd()以及巧用slice和join的組合方法。每種方法都有其獨(dú)特的優(yōu)勢和適用場景,大家在實(shí)際編程過程中,可以根據(jù)代碼的簡潔度需求、性能考量以及具體的數(shù)據(jù)處理情境來靈活選擇。希望大家多多練習(xí)這些方法,熟練掌握字符串操作技巧,并且勇于探索更多 JavaScript 編程中的小竅門,讓我們的代碼更加高效、優(yōu)雅。如果后續(xù)大家還想了解更多關(guān)于 JavaScript 的實(shí)用知識,記得持續(xù)關(guān)注我們的公眾號哦!