back to back Saya mendapat hasil berikut dengan menyemak setiap huruf hujung demi huruf jika ia tergolong dalam set unicode.letter, yang berfungsi dengan baik, tetapi saya mahu untuk mengetahui sama ada terdapat kaedah yang lebih baik atau lebih cekap untuk melakukan ini? Saya mencuba strings.trimleft/right, tetapi kemudian saya terpaksa menentukan set aksara saya sendiri untuk dialih keluar. Adalah baik untuk menggunakan koleksi yang telah ditetapkan. funcTrimWord(perkataan[]rune)rentetan{varprefixint"/> back to back Saya mendapat hasil berikut dengan menyemak setiap huruf hujung demi huruf jika ia tergolong dalam set unicode.letter, yang berfungsi dengan baik, tetapi saya mahu untuk mengetahui sama ada terdapat kaedah yang lebih baik atau lebih cekap untuk melakukan ini? Saya mencuba strings.trimleft/right, tetapi kemudian saya terpaksa menentukan set aksara saya sendiri untuk dialih keluar. Adalah baik untuk menggunakan koleksi yang telah ditetapkan. funcTrimWord(perkataan[]rune)rentetan{varprefixint">

Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Alih keluar aksara khas daripada perkataan

Alih keluar aksara khas daripada perkataan

WBOY
WBOYke hadapan
2024-02-06 10:48:08826semak imbas

Alih keluar aksara khas daripada perkataan

Kandungan soalan

Saya sedang menulis fungsi dalam go untuk membersihkan perkataan individu, dengan itu mengalih keluar aksara khas pada permulaan dan akhir setiap perkataan.

Iaitu:

  • .-Hello,->Hello
  • "Kembali ke Belakang"->Kembali ke Belakang

Saya mendapat hasil berikut dengan menyemak setiap huruf akhir demi huruf untuk melihat sama ada ia tergolong dalam set unicode.letter, yang berfungsi dengan baik, tetapi saya tertanya-tanya sama ada terdapat cara yang lebih baik atau lebih cekap untuk melakukan ini? Saya mencuba strings.trimleft/right, tetapi kemudian saya terpaksa menentukan set aksara saya sendiri untuk dialih keluar. Adalah baik untuk menggunakan koleksi yang telah ditetapkan.

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

Jawapan betul


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

rentetan pakej

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

trimfunc mengembalikan sekeping rentetan s dengan semua mata kod unikod c di hadapan dan di belakang dialih keluar yang memenuhi f(c).

Atas ialah kandungan terperinci Alih keluar aksara khas daripada perkataan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam