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

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

檢查字符串是否以十進(jìn)制數(shù)字開頭?

檢查字符串是否以十進(jìn)制數(shù)字開頭?

Go
暮色呼如 2021-10-25 17:11:05
看起來以下作品,這是一個好方法嗎?var thestr = "192.168.0.1"if (thestr[0]>= '0' && thestr[0] <= '9'){    //...}
查看完整描述

3 回答

?
米脂

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

由于您是按字符比較并且沒有字符介于 1 和 9 之間,因此我認(rèn)為您的解決方案是可以的,但它沒有考慮后面的其他數(shù)字。

例如,如果thestr"192.something.invalid"它不再是一個IP。

我建議使用正則表達(dá)式來檢查 IP。

就像是

\b(?:\d{1,3}\.){3}\d{1,3}\b


查看完整回答
反對 回復(fù) 2021-10-25
?
梵蒂岡之花

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個贊

您的解決方案完全沒問題。


但請注意,Go 中的字符串存儲為只讀字節(jié)切片,其中字節(jié)是 UTF-8 編碼的字節(jié)序列,并且索引字符串索引其bytes,而不是它的符文(字符)。但是由于十進(jìn)制數(shù)字 ( '0'..'9') 恰好有一個字節(jié),因此在這種情況下可以測試第一個byte,但首先您應(yīng)該測試 iflen(s) > 0或s != ""。


這里有一些其他的選擇,在Go Playground上嘗試所有:


1) 測試字節(jié)范圍:

這是您的解決方案,可能是最快的解決方案:


s := "12asdf"

fmt.Println(s[0] >= '0' && s[0] <= '9')

2)使用fmt.Sscanf():

注意:如果string以負(fù)數(shù)開頭,這也接受,決定它是否對你來說是一個問題(例如 accepts "-12asf")。


i := 0

n, err := fmt.Sscanf(s, "%d", &i)

fmt.Println(n > 0, err == nil) // Both n and err can be used to test

3)使用unicode.IsDigit():

fmt.Println(unicode.IsDigit(rune(s[0])))

4)使用regexp:

我可能永遠(yuǎn)不會使用它,因?yàn)檫@是迄今為止最慢的,但它是:


r := regexp.MustCompile(`^\d`)

fmt.Println(r.FindString(s) != "")

或者:


r := regexp.MustCompile(`^\d.*`)

fmt.Println(r.MatchString(s))


查看完整回答
反對 回復(fù) 2021-10-25
  • 3 回答
  • 0 關(guān)注
  • 205 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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