Ich habe versucht, die Zeichenfolge zu blockieren, aber etwas ist schiefgegangen
Der reproduzierbare Code ist unten und erfordert alle alten und neuen Paare. Wie bekomme ich col1
而不是 col0b
?
package main import ( "fmt" "strings" ) func main() { r := strings.NewReplacer("a", "col0", "ab", "col1") s := "ab" fmt.Println(r.Replace(s)) }
Ich möchte, dass die Zeichenfolge mit maximaler Länge oder dem Greedy-Prinzip ersetzbar ist
Laut Dokumentation führt die Ersetzung durch NewReplacer die Zeichenfolgen in der Reihenfolge aus, in der sie im Ziel erscheinen, ohne überlappende Übereinstimmungen, also folgt immer der ersten passenden Basis. Wenn es erlaubt ist, denke ich, dass Sie dieses Problem lösen könnten, indem Sie die Ersatzpaare so umordnen, dass die längere Zeichenfolge (“ab”-“col1”
)放置在较短的字符串(“a”,“col0”
) vor
package main import ( "fmt" "strings" ) func main() { r := strings.NewReplacer("ab", "col1", "a", "col0") s := "ab" fmt.Println(r.Replace(s)) }
Das obige ist der detaillierte Inhalt vonWie ersetzt man Strings in Golang richtig durch das „Gierprinzip'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!