[英]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
但是如果第一個字段是0
或0.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.