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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何檢查字符串中的一個或多個符號

如何檢查字符串中的一個或多個符號

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

2 回答

?
倚天杖

TA貢獻1828條經(jīng)驗 獲得超3個贊

在 Go 中,編寫一個簡單的函數(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(`#}{&*"(£)`))

}

游樂場:https://play.golang.org/p/Y2KjDcHSupH

輸出:

true
false

Go 編程語言規(guī)范

開關(guān)語句

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

表情開關(guān)

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

switch 表達式之前可以有一個簡單的語句,該語句在計算表達式之前執(zhí)行。

失敗聲明

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

switch b := s[i]; {

? ? // ...

}

相當于


switch b := s[i]; true {

? ? // ...

}

相當于


{

? ? b := s[i]

? ? switch true {

? ? ? ? // ...

? ? }?

}

簡單語句聲明b := s[i]b語句switch { }塊局部變量。

評估案例表達式并與 進行比較true。如果沒有一個是真的,則default采取。

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

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


這是一個簡單的基準。

輸出:

$ 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)

? ? }

}


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

TA貢獻1829條經(jīng)驗 獲得超9個贊

由于白名單可以很容易地定義為正則表達式,因此使用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)

}


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

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