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

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

如何僅在高俚語中的引號之外時才拆分字符?

如何僅在高俚語中的引號之外時才拆分字符?

Go
夢里花落0921 2022-10-04 16:49:51
我需要在符號上拆分一大塊文本,但只有當它位于單引號之外時。文本將如下所示:+Some.data:'some+value'+some.more.data:9+yet.more.data:'rock+roll'它應該成為三個值的切片:一些數據:“一些+價值”更多 數據:9然而,更多數據:“搖滾樂”我發現類似的問題使用正則表達式來做到這一點,但這需要向前看,這是golang正則表達式引擎所沒有的。我還在沒有前瞻的情況下創建自己的正則表達式:'.*?'(\+)|[^']*(\+)但是,這似乎在第三項上分崩離析,它在in上分裂。+'rock+roll'我考慮過可能做一個字符串拆分,然后驗證每個切片以確保它不是部分表達式,然后如果是,則將碎片拼接在一起,但它將相當復雜,如果可能的話,我想避免它。+目前,我認為最好的解決方案是識別引號內的文本(我可以很容易地用正則表達式做到這一點),要么對該文本進行URL編碼,要么用加號做其他事情,拆分文本,然后URL解碼表達式以取回引號內的符號,但我想知道是否有更好的方法。+有誰知道一種方法可以使用正則表達式在引號之外的符號上拆分而不進行前瞻?有誰能想到比我的URL編碼/解碼方法更簡單的解決方案?+
查看完整描述

1 回答

?
GCT1015

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

純代碼可以更容易:


func split(s string) []string {

    var result []string

    inquote := false

    i := 0

    for j, c := range s {

        if c == '\'' {

            inquote = !inquote

        } else if c == '+' && !inquote {

            result = append(result, s[i:j])

            i = j +1

        }

    }

    return append(result, s[i:])

}


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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