Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 替换golang中出现的第n个字符串_String_Go - Fatal编程技术网

String 替换golang中出现的第n个字符串

String 替换golang中出现的第n个字符串,string,go,String,Go,如何替换golang中字符串的第n次出现(在本例中为第二次出现)?下面的代码将示例字符串optimism from optimism替换为o from optimism,我希望它是optimism from package main import ( "fmt" "strings" ) func main() { mystring := "optimismo from optimism" excludingSecond := strings.Replace(m

如何替换golang中字符串的第n次出现(在本例中为第二次出现)?下面的代码将示例字符串
optimism from optimism
替换为
o from optimism
,我希望它是
optimism from

package main

import (
    "fmt"
    "strings"
)

func main() {
    mystring := "optimismo from optimism"
    excludingSecond := strings.Replace(mystring, "optimism", "", 1)
    fmt.Println(excludingSecond)
}

如果你总是知道会有两个索引,你可以先找到第一个的索引,然后对之后的所有内容进行替换,最后将它们组合在一起

比如说,

package main

import (
    "fmt"
    "strings"
)

// Replace the nth occurrence of old in s by new.
func replaceNth(s, old, new string, n int) string {
    i := 0
    for m := 1; m <= n; m++ {
        x := strings.Index(s[i:], old)
        if x < 0 {
            break
        }
        i += x
        if m == n {
            return s[:i] + new + s[i+len(old):]
        }
        i += len(old)
    }
    return s
}

func main() {
    s := "optimismo from optimism"
    fmt.Printf("%q\n", s)
    t := replaceNth(s, "optimism", "", 2)
    fmt.Printf("%q\n", t)
}

对于任何在这篇文章上绊倒并希望取代最后一次出现的人

package main

import (
    "fmt"
    "strings"
)

func main() {
    mystring := "optimismo from optimism"

    i := strings.LastIndex(mystring, "optimism")
    excludingLast := mystring[:i] + strings.Replace(mystring[i:], "optimism", "", 1)
    fmt.Println(excludingLast)
}

你总是知道会有两个吗?
"optimismo from optimism"
"optimismo from "
package main

import (
    "fmt"
    "strings"
)

func main() {
    mystring := "optimismo from optimism"

    i := strings.LastIndex(mystring, "optimism")
    excludingLast := mystring[:i] + strings.Replace(mystring[i:], "optimism", "", 1)
    fmt.Println(excludingLast)
}