Rücken an Rücken Ich habe das folgende Ergebnis erhalten, indem ich jeden Endbuchstaben für den Buchstaben überprüft habe, ob er zum unicode.letter-Satz gehört, was großartig funktioniert, aber ich würde gerne Möchten Sie wissen, ob es dafür eine bessere oder effizientere Methode gibt? Ich habe strings.trimleft/right ausprobiert, musste dann aber meinen eigenen Zeichensatz zum Entfernen definieren. Es wäre schön, vordefinierte Sammlungen zu verwenden. funcTrimWord(word[]rune)string{varprefixint"/> Rücken an Rücken Ich habe das folgende Ergebnis erhalten, indem ich jeden Endbuchstaben für den Buchstaben überprüft habe, ob er zum unicode.letter-Satz gehört, was großartig funktioniert, aber ich würde gerne Möchten Sie wissen, ob es dafür eine bessere oder effizientere Methode gibt? Ich habe strings.trimleft/right ausprobiert, musste dann aber meinen eigenen Zeichensatz zum Entfernen definieren. Es wäre schön, vordefinierte Sammlungen zu verwenden. funcTrimWord(word[]rune)string{varprefixint">

Heim  >  Artikel  >  Backend-Entwicklung  >  Entfernen Sie Sonderzeichen aus Wörtern

Entfernen Sie Sonderzeichen aus Wörtern

WBOY
WBOYnach vorne
2024-02-06 10:48:08830Durchsuche

Entfernen Sie Sonderzeichen aus Wörtern

Frageninhalt

Ich schreibe eine Funktion in go, um einzelne Wörter zu bereinigen und dadurch Sonderzeichen am Anfang und Ende jedes Wortes zu entfernen.

Das heißt:

  • .-Hallo,->Hallo
  • "Rücken an Rücken"->Rücken an Rücken

Ich habe das folgende Ergebnis erhalten, indem ich jeden Endbuchstaben einzeln überprüft habe, um zu sehen, ob er zum unicode.letter-Satz gehört. Das funktioniert hervorragend, aber ich habe mich gefragt, ob es einen besseren oder effizienteren Weg gibt, dies zu tun? Ich habe strings.trimleft/right ausprobiert, musste dann aber meinen eigenen Zeichensatz zum Entfernen definieren. Es wäre schön, vordefinierte Sammlungen zu verwenden.

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

Richtige Antwort


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

Paketzeichenfolge

func TrimFunc(s string, f func(rune) bool) string

trimfunc gibt ein Segment der Zeichenfolge s zurück, wobei alle führenden und nachfolgenden Unicode-Codepunkte c, die f(c) erfüllen, entfernt wurden.

Das obige ist der detaillierte Inhalt vonEntfernen Sie Sonderzeichen aus Wörtern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen