J'écris une fonction dans go pour nettoyer les mots individuels, supprimant ainsi les caractères spéciaux au début et à la fin de chaque mot.
C'est-à-dire :
J'ai obtenu le résultat suivant en vérifiant chaque lettre de fin par lettre pour voir si elle appartient à l'ensemble unicode.letter, ce qui fonctionne très bien, mais je me demandais s'il existe un moyen meilleur ou plus efficace de procéder ? J'ai essayé strings.trimleft/right, mais j'ai ensuite dû définir mon propre jeu de caractères à supprimer. Ce serait bien d'utiliser des collections prédéfinies.
func TrimWord(word []rune) string { var prefix int = 0 var suffix int = len(word) for x := 0; x < len(word); x++ { if !unicode.IsLetter(word[x]) { prefix++ } else { break } } for x := len(word) - 1; x >= 0; x-- { if suffix == prefix { break } if !unicode.IsLetter(word[x]) { suffix-- } else { break } } return string(word[prefix:suffix]) }
package main import ( "fmt" "strings" "unicode" ) func trimword(s string) string { return strings.trimfunc(s, func(r rune) bool { return !unicode.isletter(r) }) } func main() { fmt.println(trimword(`.-hello,`)) // -> hello fmt.println(trimword(`"back-to-back"`)) // -> back-to-back }
//m.sbmmt.com/link/55053683268957697aa39fba6f231c68
hello back-to-back
func TrimFunc(s string, f func(rune) bool) string
trimfunc renvoie une tranche de chaîne s avec tous les points de code Unicode de début et de fin c qui satisfont f(c) supprimés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!