dos à dos J'ai obtenu le résultat suivant en vérifiant chaque lettre de fin si elle appartient à l'ensemble unicode.letter, ce qui fonctionne très bien, mais j'aimerais savoir s'il existe une méthode meilleure ou plus efficace pour ce faire ? 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. funcTrimWord(mot[]rune)chaîne{varprefixint"/> dos à dos J'ai obtenu le résultat suivant en vérifiant chaque lettre de fin si elle appartient à l'ensemble unicode.letter, ce qui fonctionne très bien, mais j'aimerais savoir s'il existe une méthode meilleure ou plus efficace pour ce faire ? 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. funcTrimWord(mot[]rune)chaîne{varprefixint">

Maison  >  Article  >  développement back-end  >  Supprimer les caractères spéciaux des mots

Supprimer les caractères spéciaux des mots

WBOY
WBOYavant
2024-02-06 10:48:08828parcourir

Supprimer les caractères spéciaux des mots

Contenu de la question

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 :

  • .-Bonjour,->Bonjour
  • "Dos à Dos"-> Dos à Dos

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])
}

Bonne réponse


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
}

https://www.php.cn/link/55053683268957697aa39fba6f231c68

hello
back-to-back

chaîne de paquet

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer