我想知道如何刪除:如何從Golang中的字符串中刪除多餘的空格/空格?
- 所有前/後的字符串(如內空白或換行字符,空字符等
- 任何多餘的空格「你好[空格] [空間]世界「將被轉換爲」你好[空間]世界「)
這是可能的一個單一的正則表達式,Unicode支持國際空間字符等?
我想知道如何刪除:如何從Golang中的字符串中刪除多餘的空格/空格?
這是可能的一個單一的正則表達式,Unicode支持國際空間字符等?
看來你可能要同時使用\s
速記字符類和\p{Zs}
Unicode的屬性相匹配的Unicode空間。然而,兩個步驟不能用1個正則表達式替換完成,因爲你需要兩個不同的替換,並且ReplaceAllStringFunc
只允許一個完整的匹配字符串作爲參數(我不知道如何檢查哪個組匹配)。
因此,我建議使用兩個正則表達式:
^[\s\p{Zs}]+|[\s\p{Zs}]+$
- 匹配所有前導/尾隨空白[\s\p{Zs}]{2,}
- 要匹配的字符串示例代碼內2個或更多的空白碼元:
package main
import (
"fmt"
"regexp"
)
func main() {
input := " Text More here "
re_leadclose_whtsp := regexp.MustCompile(`^[\s\p{Zs}]+|[\s\p{Zs}]+$`)
re_inside_whtsp := regexp.MustCompile(`[\s\p{Zs}]{2,}`)
final := re_leadclose_whtsp.ReplaceAllString(input, "")
final = re_inside_whtsp.ReplaceAllString(final, " ")
fmt.Println(final)
}
美麗,謝謝! –
爲此使用正則表達式。
func main() {
data := []byte(" Hello, World ! ")
re := regexp.MustCompile(" +")
replaced := re.ReplaceAll(bytes.TrimSpace(data), []byte(" "))
fmt.Println(string(replaced))
// Hello, World !
}
爲了還修剪新行和空字符,你可以使用bytes.Trim(src []byte, cutset string)
函數而不是bytes.TrimSpace
這是否也包含unicode和其他「隱形」字符等?理想情況下希望消除大多數情況下匹配的兩個看似平等的字符串。 –
我建議您閱讀有關golang字符串(https://blog.golang.org/strings),然後修改此代碼以替換您要替換的確切字符。我的代碼旨在成爲如何做你問的一個例子,而不是確切的解決方案。 –
你可以得到相當的到目前爲止僅僅使用strings
包爲strings.Fields
完成大部分工作的你:
package main
import (
"fmt"
"strings"
)
func standardizeSpaces(s string) string {
return strings.Join(strings.Fields(s), " ")
}
func main() {
tests := []string{" Hello, World ! ", "Hello,\tWorld ! ", " \t\n\t Hello,\tWorld\n!\n\t"}
for _, test := range tests {
fmt.Println(standardizeSpaces(test))
}
}
// "Hello, World !"
// "Hello, World !"
// "Hello, World !"
偉大的答案,如果你不想使用正則表達式! –
'''strings.TrimSpace()''' –
這將會是清潔劑來定義一個簡單的函數.... –
' s:= strings.TrimSpace(strings.Replace(orig,「」,「」,-1))'看起來很簡單。空格字符通常只是ASCII空間。如果你得到不同的空間字符,那麼你需要明確地處理這些字符。 – elithrar