簡體   English   中英

刪除字符串中的前導,尾隨和多個空格

[英]Removing leading, trailing and multiple spaces within a string

我想刪除所有前導和尾隨空格。 除了用字符串中的單個空格替換多個空格,以便字符串中的所有單詞完全由單個空格分隔。

我可以使用正則表達式的兩次迭代並尋找單個正則表達式解決方案來實現這一點。

s/^\s+|\s+$//g
s/\s+/ /g

樣本輸入:

   word1   word2 word3     word4    

期望的輸出:

word1 word2 word3 word4

如果你能幫助我解決這個問題,那將是件好事。

您可以使用以下內容:

s/^\s+|\s+$|\s+(?=\s)//g

\\s+(?=\\s)將匹配字符串中間的所有空格並留下一個空格。

使用awk

echo "   word1   word2 word3     word4  " | awk '{$1=$1}1'
word1 word2 word3 word4

$1=$1是集中一切的訣竅。

你甚至可以使用

awk '$1=$1' file

但是如果第一個字段是00.0 ,它將失敗

在Javascript中,字符串原型有兩種方法可以管理:

str.trim().replace(/\s+/g, ' ')

str.trim()將刪除前導和尾隨空格

str.replace(regex, replacement)將返回一個新字符串(對原始str非破壞性),其中regex將與提供的字符串進行比較,匹配的第一個實例將被替換replacement ,然后返回整個新字符串。

需要注意的重要事項: .replace的第一個參數不應該用引號封裝。 /regex/用斜杠( /regex/ )分隔,然后附加g表示全局替換(每個匹配的實例),而不是僅僅基於lastIndex (最初為0,給出第一個實例)替換第一個或下一個實例。 您可以閱讀更多關於lastIndex以及我在第二個鏈接中提到的所有內容。

例:

 var str = ' 1 2 3 4 ' function trimReplace(str){ newStr = str.trim().replace(/\\s+/g, ' '); console.log(newStr); } trimReplace(str) 

在你的控制台中嘗試這個: ' 1 2 3 4 '.trim().replace(/\\s+/g, ' ')

“1 2 3 4”

_

正則表達式: kleene運算符將幫助您理解用於匹配多個空格的正則表達式

正則表達式: 有關正則表達式和/ g標志的有用指南

Google:MDN string.protoype.trim()

Google:MDN string.prototype.replace()

這可能適合你(GNU sed):

sed -r 's/((^)\s*(\S))|((\S)\s*($))|(\s)\s*/\2\3\5\6\7/g' file

或者干脆:

sed -r 's/(^\s*(\S))|((\S)\s*$)|(\s)\s*/\2\4\5/g file

如果您使用的是UNIX,則可以利用shell的分詞功能 Bash示例使用下面的命令替換

STR="   word1   word2 word3     word4  "
z=$(echo $STR)
echo "$z"
word1 word2 word3 word4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM