第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何檢查字符串中的一個(gè)或多個(gè)符號(hào)

如何檢查字符串中的一個(gè)或多個(gè)符號(hào)

Go
慕無(wú)忌1623718 2023-06-01 15:19:11
我正在努力尋找一種方法來(lái)檢查字符串是否包含一個(gè)或多個(gè)如下所示的符號(hào):#}{&*"(£)雖然檢查一個(gè)或多個(gè)這些符號(hào)相當(dāng)簡(jiǎn)單,但我不打算構(gòu)建和維護(hù)列表或可能條目的字典。有沒(méi)有一種方法可以檢查一個(gè)字符串是否包含一個(gè)或多個(gè)任何非標(biāo)準(zhǔn)符號(hào),最好使用標(biāo)準(zhǔn)庫(kù)?具體來(lái)說(shuō),我正在尋找任何不是a-zA-Z0-9根據(jù)我的問(wèn)題將被視為非標(biāo)準(zhǔn)符號(hào)的東西。
查看完整描述

2 回答

?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

在 Go 中,編寫(xiě)一個(gè)簡(jiǎn)單的函數(shù)。例如,


package main


import (

? ? "fmt"

)


func isStandard(s string) bool {

? ? for i := 0; i < len(s); i++ {

? ? ? ? switch b := s[i]; {

? ? ? ? case b >= 'a' && b <= 'z':

? ? ? ? ? ? continue

? ? ? ? case b >= 'A' && b <= 'Z':

? ? ? ? ? ? continue

? ? ? ? case b >= '0' && b <= '9':

? ? ? ? ? ? continue

? ? ? ? default:

? ? ? ? ? ? return false

? ? ? ? }

? ? }

? ? return true

}


func main() {

? ? fmt.Println(isStandard(`ABCabc123`))

? ? fmt.Println(isStandard(`#}{&*"(£)`))

}

游樂(lè)場(chǎng):https://play.golang.org/p/Y2KjDcHSupH

輸出:

true
false

Go 編程語(yǔ)言規(guī)范

開(kāi)關(guān)語(yǔ)句

“Switch”語(yǔ)句提供多路執(zhí)行。將表達(dá)式或類型說(shuō)明符與“開(kāi)關(guān)”內(nèi)的“案例”進(jìn)行比較,以確定要執(zhí)行的分支。

表情開(kāi)關(guān)

在表達(dá)式 switch 中,switch 表達(dá)式被求值,case 表達(dá)式不需要是常量,從左到右和從上到下求值;第一個(gè)等于 switch 表達(dá)式的觸發(fā)執(zhí)行關(guān)聯(lián)案例的語(yǔ)句;其他情況被跳過(guò)。如果沒(méi)有匹配的案例并且存在“默認(rèn)”案例,則執(zhí)行其語(yǔ)句。最多可以有一個(gè) default case,它可以出現(xiàn)在“switch”語(yǔ)句的任何地方。

switch 表達(dá)式之前可以有一個(gè)簡(jiǎn)單的語(yǔ)句,該語(yǔ)句在計(jì)算表達(dá)式之前執(zhí)行。

失敗聲明

“fallthrough”語(yǔ)句將控制轉(zhuǎn)移到表達(dá)式“switch”語(yǔ)句中下一個(gè) case 子句的第一條語(yǔ)句。它只能用作此類子句中的最終非空語(yǔ)句。

switch b := s[i]; {

? ? // ...

}

相當(dāng)于


switch b := s[i]; true {

? ? // ...

}

相當(dāng)于


{

? ? b := s[i]

? ? switch true {

? ? ? ? // ...

? ? }?

}

簡(jiǎn)單語(yǔ)句聲明b := s[i]b語(yǔ)句switch { }塊局部變量。

評(píng)估案例表達(dá)式并與 進(jìn)行比較true。如果沒(méi)有一個(gè)是真的,則default采取。

與 C 不同,Go 需要顯式的fallthrough.

ASCII 是 Unicode UTF-8 的子集。由于標(biāo)準(zhǔn)字符都是ASCII,我們可以簡(jiǎn)單的比較字節(jié)。


這是一個(gè)簡(jiǎn)單的基準(zhǔn)。

輸出:

$ go test standard_test.go -bench=. -benchmem

BenchmarkPeterSO-8? ? 200000000? ? ? ?8.10 ns/op? ? 0 B/op? ? 0 allocs/op

BenchmarkJubobs-8? ? ? 10000000? ? ?222 ns/op? ? ? ?0 B/op? ? 0 allocs/op

$?

standard_test.go:


package main


import (

? ? "regexp"

? ? "testing"

)


func isStandard(s string) bool {

? ? for i := 0; i < len(s); i++ {

? ? ? ? switch b := s[i]; {

? ? ? ? case b >= 'a' && b <= 'z':

? ? ? ? ? ? continue

? ? ? ? case b >= 'A' && b <= 'Z':

? ? ? ? ? ? continue

? ? ? ? case b >= '0' && b <= '9':

? ? ? ? ? ? continue

? ? ? ? default:

? ? ? ? ? ? return false

? ? ? ? }

? ? }

? ? return true

}


func BenchmarkPeterSO(b *testing.B) {

? ? std := `ABCabc123`

? ? for N := 0; N < b.N; N++ {

? ? ? ? isStandard(std)

? ? }

}


var (

? ? whitelist? = "A-Za-z0-9"

? ? disallowed = regexp.MustCompile("[^" + whitelist + " ]+")

)


func IsValid(s string) bool {

? ? return !disallowed.MatchString(s)

}


func BenchmarkJubobs(b *testing.B) {

? ? std := `ABCabc123`

? ? for N := 0; N < b.N; N++ {

? ? ? ? IsValid(std)

? ? }

}


查看完整回答
反對(duì) 回復(fù) 2023-06-01
?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊

由于白名單可以很容易地定義為正則表達(dá)式,因此使用regexp.MatchString


package main


import (

? ? "fmt"

? ? "regexp"

)


var (

? ? whitelist? = "A-Za-z0-9"

? ? disallowed = regexp.MustCompile(fmt.Sprintf("[^%s]+", whitelist))

)


func main() {

? ? fmt.Println(IsValid("foobar007"))

? ? fmt.Println(IsValid("foo%bar&007"))

}


func IsValid(s string) bool {

? ? return !disallowed.MatchString(s)

}


查看完整回答
反對(duì) 回復(fù) 2023-06-01
  • 2 回答
  • 0 關(guān)注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)