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

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

如何在字符之間拆分字符串兩

如何在字符之間拆分字符串兩

Go
拉丁的傳說 2022-09-19 10:46:38
我想在兩個(gè)字符之間拆分字符串( {{ 和 }})。我有一個(gè)像這樣的字符串{{number1}} + {{number2}} > {{number3}}我正在尋找一些返回的東西:[number1, number2, number3]
查看完整描述

4 回答

?
www說

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊

你可以用正則表達(dá)式試試看:


s := "{{number1}} + {{number2}} > {{number3}}"


// Find all substrings in form {<var name>}

re := regexp.MustCompile("{[a-z]*[0-9]*[a-z]*}")

nums := re.FindAllString(s, -1)


// Remove '{' and '}' from all substrings

for i, _ := range nums {

    nums[i] = strings.TrimPrefix(nums[i], "{")

    nums[i] = strings.TrimSuffix(nums[i], "}")

}


fmt.Println(nums)  // output: [number1 number2 number3]

您可以在此處嘗試使用正則表達(dá)式:https://regex101.com/r/kkPWAS/1


查看完整回答
反對 回復(fù) 2022-09-19
?
慕雪6442864

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

您不需要使用庫。您可以創(chuàng)建自己的函數(shù)。


package main


const r1 = '{'

const r2 = '}'


func GetStrings(in string) (out []string) {

    var tren string

    wr := false

    f := true

    for _, c := range in {

        if wr && c != r2 {

            tren = tren + string(c)

        }

        if c == r1 {

            f = !f

            wr = f

        }

        if c == r2 {

            wr = false

            if f {

                out = append(out, tren)

                tren = ""

            }

            f = !f

        }

    }

    return

}


查看完整回答
反對 回復(fù) 2022-09-19
?
波斯汪

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊

使用模板解析器的困難方法^^


package main


import (

    "fmt"

    "strings"

    "text/template/parse"

)


func main() {


    input := "{{number1}} + {{number2}} > {{number3}}"

    out := parseit(input)

    fmt.Printf("%#v\n", out)

}


func parseit(input string) (out []string) {

    input = strings.Replace(input, "{{", "{{.", -1) // Force func calls to become variables.

    tree, err := parse.Parse("", input, "{{", "}}")

    if err != nil {

        panic(err)

    }

    visit(tree[""].Root, func(n parse.Node) bool {

        x, ok := n.(*parse.FieldNode)

        if ok {

            out = append(out, strings.Join(x.Ident, "."))

        }

        return true

    })

    return

}


func visit(n parse.Node, fn func(parse.Node) bool) bool {

    if n == nil {

        return true

    }

    if !fn(n) {

        return false

    }

    if l, ok := n.(*parse.ListNode); ok {

        for _, nn := range l.Nodes {

            if !visit(nn, fn) {

                continue

            }

        }

    }

    if l, ok := n.(*parse.RangeNode); ok {

        if !visit(l.BranchNode.Pipe, fn) {

            return false

        }

        if l.BranchNode.List != nil {

            if !visit(l.BranchNode.List, fn) {

                return false

            }

        }

        if l.BranchNode.ElseList != nil {

            if !visit(l.BranchNode.ElseList, fn) {

                return false

            }

        }

    }

    if l, ok := n.(*parse.ActionNode); ok {

        for _, c := range l.Pipe.Decl {

            if !visit(c, fn) {

                continue

            }

        }

        for _, c := range l.Pipe.Cmds {

            if !visit(c, fn) {

                continue

            }

        }

    }

    if l, ok := n.(*parse.CommandNode); ok {

        for _, a := range l.Args {

            if !visit(a, fn) {

                continue

            }

        }

    }

    if l, ok := n.(*parse.PipeNode); ok {

        for _, a := range l.Decl {

            if !visit(a, fn) {

                continue

            }

        }

        for _, a := range l.Cmds {

            if !visit(a, fn) {

                continue

            }

        }

    }

    return true

}

如果發(fā)生這種情況,您確實(shí)在操作模板字符串,但由于函數(shù)調(diào)用而未能執(zhí)行此操作,并且您不想執(zhí)行此操作input = strings.Replace(input, "{{", "{{.", -1) // Force func calls to become variables.


您始終可以使用類似于



var reMissingIdent = regexp.MustCompile(`template: :[0-9]+: function "([^"]+)" not defined`)


func ParseTextTemplateAnyway(s string) (*texttemplate.Template, texttemplate.FuncMap, error) {

    fn := texttemplate.FuncMap{}

    for {

        t, err := texttemplate.New("").Funcs(fn).Parse(s)

        if err == nil {

            return t, fn, err

        }

        s := err.Error()

        res := reMissingIdent.FindAllStringSubmatch(s, -1)

        if len(res) > 0 {

            fn[res[0][1]] = func(s ...interface{}) string { return "" }

        } else {

            return t, fn, err

        }

    }

    // return nil, nil

}


查看完整回答
反對 回復(fù) 2022-09-19
?
浮云間

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊

使用正則表達(dá)式并將字符串的字母數(shù)字部分篩選為字符串?dāng)?shù)組。[A-Za-z]+[0-9]


package main


import (

    "fmt"

    "regexp"

)


func main() {

    s := `{{number1}} + {{number2}} > {{number3}}`

    re := regexp.MustCompile("[A-Za-z]+[0-9]")

    p := re.FindAllString(s, -1)

    fmt.Println(p) //[number1 number2 number3]

}


查看完整回答
反對 回復(fù) 2022-09-19
  • 4 回答
  • 0 關(guān)注
  • 106 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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