back to back 각 끝 문자가 unicode.letter 세트에 속하는지 문자별로 확인하여 다음과 같은 결과를 얻었습니다. 훌륭하게 작동하지만 싶습니다. 이를 수행하는 더 좋고 효율적인 방법이 있는지 알고 싶으십니까? strings.trimleft/right를 시도했지만 제거할 문자 세트를 직접 정의해야 했습니다. 미리 정의된 컬렉션을 사용하는 것이 좋을 것입니다. funcTrimWord(word[]rune)string{varprefixint"/> back to back 각 끝 문자가 unicode.letter 세트에 속하는지 문자별로 확인하여 다음과 같은 결과를 얻었습니다. 훌륭하게 작동하지만 싶습니다. 이를 수행하는 더 좋고 효율적인 방법이 있는지 알고 싶으십니까? strings.trimleft/right를 시도했지만 제거할 문자 세트를 직접 정의해야 했습니다. 미리 정의된 컬렉션을 사용하는 것이 좋을 것입니다. funcTrimWord(word[]rune)string{varprefixint">

>백엔드 개발 >Golang >단어에서 특수 문자 제거

단어에서 특수 문자 제거

WBOY
WBOY앞으로
2024-02-06 10:48:08903검색

단어에서 특수 문자 제거

질문 내용

go에 개별 단어를 정리하여 각 단어의 시작과 끝에서 특수 문자를 제거하는 함수를 작성하고 있습니다.

즉:

  • .-안녕하세요,->안녕하세요
  • "백투백"->백투백

각 끝 문자를 문자별로 확인하여 unicode.letter 세트에 속하는지 확인하여 다음과 같은 결과를 얻었습니다. 이는 훌륭하게 작동하지만 이를 수행하는 더 좋고 효율적인 방법이 있는지 궁금합니다. strings.trimleft/right를 시도했지만 제거할 문자 세트를 직접 정의해야 했습니다. 미리 정의된 컬렉션을 사용하는 것이 좋을 것입니다.

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
}

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

으아악

패키지 문자열

으아악

trimfunc는 f(c)를 만족하는 모든 선행 및 후행 유니코드 코드 포인트 c가 제거된 문자열 s의 조각을 반환합니다.

위 내용은 단어에서 특수 문자 제거의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제