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

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

在 GO 中最后一次拆分后獲取數組元素

在 GO 中最后一次拆分后獲取數組元素

Go
jeck貓 2022-11-28 16:58:03
不知道標題說的清楚不,我來解釋一下我的問題,我有這段代碼:package mainimport (    "fmt")func main() {    s := "[email protected]"    fields := []string{}    last := 0    for i, r := range s {        if r == '_' || r == '-' {            fmt.Printf("%q\n", fields)            fields = append(fields, s[last:i+1])            last = i + 1        }    }    fmt.Printf("%q\n", fields)}此代碼打印此:["test-" "email-"]但我不知道如何在同一個數組中同時放入最后一個詞“測試”,以便它給出:["test-" "email-" "test"]有人有想法嗎?
查看完整描述

3 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

我不完全確定最終目標是什么,但如果要獲取由電子郵件地址的用戶名部分分隔-或_在其中分隔的字段列表,您可能只想使用strings.Split和strings.FieldsFunc。


您可以只獲取用戶名部分,然后使用Split獲取字段。@FieldsFunc


package main


import (

    "fmt"

    "strings"

)


func main() {

    s := "[email protected]"

    user := strings.Split(s, "@")[0] // get the username part

    fields := strings.FieldsFunc(user, func(c rune) bool {

        return c == '-' || c == '_'

    })

    fmt.Println(fields)

}

操場


查看完整回答
反對 回復 2022-11-28
?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

如果在“@”之前有“-”作為您可以使用的替代方案,您的循環將正確運行


s := string("[email protected]")


fields := []string{}


name := strings.Split(s, "@") //separate from the "@"


name2 := strings.Split(name[0], "-") //separate from the "-"


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

    fields = append(fields, name2[i])

}


fmt.Println(fields)

輸出


[test email test]


查看完整回答
反對 回復 2022-11-28
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

剪切字符串的標準是找到某個字符。最后一段不符合這條規則,除非你使用像“abc-”這樣的字符串

建議:檢查 last 之后是否有內容并將其追加到 for 循環之后


查看完整回答
反對 回復 2022-11-28
  • 3 回答
  • 0 關注
  • 208 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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