亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

使用否定關鍵字進行關鍵字搜索

使用否定關鍵字進行關鍵字搜索

Go
墨色風雨 2022-10-17 19:15:49
我有一個關于 Go 中關鍵字搜索的簡單問題。我想使用正負關鍵字搜索字符串func keyword(itemTitle string, keywords string) bool {    splits := strings.Split(keywords, ",")    for _, item := range splits {        item = strings.TrimSpace(item)        fmt.Println(strings.ToUpper(itemTitle))        fmt.Println(strings.ToUpper(item))        if strings.Contains(item,"-") {            item = item[1:]            if strings.Contains(strings.ToUpper(itemTitle), strings.ToUpper(item)) {                return false            }        }        item = item[1:]        fmt.Println(strings.ToUpper(item))        if strings.Contains(strings.ToUpper(itemTitle), strings.ToUpper(item)) {            return true        }    }    return false}這是我的搜索方法func TestKeyword(t *testing.T) {    test1 := "Pokemon Nintendo Switch Cool Thing"    keywordTest1 := "+pokemon,-nintendo"    if keyword(test1, keywordTest1) {        fmt.Println("matched")    } else {        fmt.Println("test")    }    test2 := "Pokemon Cards Cool"    if keyword(test2, keywordTest1) {        fmt.Println("matched")    } else {        fmt.Println("test")    }}我的測試用例我理解為什么它不起作用,因為 +amd 是切片中的第一個,并且它的 ofc 將返回 true 并且不測試任何其他類似 -radeon 但我只是有點難過要做什么。輸出給定matchedmatched預期產出testmatched
查看完整描述

1 回答

?
www說

TA貢獻1775條經驗 獲得超8個贊

我更新了你的搜索功能但保留了簽名


func keyword(itemTitle string, keywords string) bool {

    a := strings.ToUpper(itemTitle)

    b := strings.ToUpper(keywords)

    keys := strings.Split(strings.Replace(b, "-", " ", -1), ",")

    for _, key := range keys {

        key = strings.TrimSpace(key)

        if strings.Contains(a, key) {

            return true

        }

    }

    return false

}

并使用通過測試和失敗測試更新您的測試功能,看看它是如何工作的。


func TestKeyword(t *testing.T) {

    test1 := "Pokemon Nintendo Switch Cool Thing"

    keywordTest1 := "+pokemon,-nintendo"


    if keyword(test1, keywordTest1) {

        t.Log("matched")

    } else {

        t.Fail()

    }


    test2 := "Pokemon Cards Cool"


    if keyword(test2, keywordTest1) {

        t.Log("matched")

    } else {

        t.Fail()

    }

}

關于第二次測試失敗的關鍵字,如果需要,您可以通過正則表達式傳遞它以僅獲取字母數字字符。


查看完整回答
反對 回復 2022-10-17
  • 1 回答
  • 0 關注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號