Maison > développement back-end > Golang > le corps du texte

Remplacer les caractères dans la chaîne en golang

WBOY
Libérer: 2024-02-09 18:09:07
avant
1200 Les gens l'ont consulté

Remplacer les caractères dans la chaîne en golang

En programmation golang, remplacer des caractères dans une chaîne est une opération courante. Que vous remplaciez un seul caractère ou plusieurs caractères, vous pouvez le faire en utilisant les fonctions et méthodes de chaîne intégrées. Dans cet article, nous allons vous présenter comment remplacer les caractères de chaîne dans Golang par l'éditeur PHP Xinyi. Que vous soyez débutant ou développeur expérimenté, cet article vous fournira des conseils concis et clairs pour vous aider à maîtriser cette technique en toute simplicité.

Contenu de la question

J'essaie de remplacer un caractère à une position spécifique dans un tableau de chaînes. Mon code ressemble à ceci :

package main

import (
    "fmt"
)

func main() {
    str := []string{"test","testing"}
    str[0][2] = 'y'
    fmt.Println(str)
}
Copier après la connexion

À l'heure actuelle, l'exécution de cette commande me donne l'erreur : 

cannot assign to str[0][2]
Copier après la connexion

Une idée de comment faire ça ? J'ai essayé d'utiliser strings.Replace mais pour autant que je sache, cela remplacera toutes les occurrences d'un caractère donné et je souhaite remplacer ce caractère spécifique. Toute aide est appréciée. TIA.

Solution

Les chaînes dans Go sont immuables, vous ne pouvez pas modifier leur contenu. Pour modifier la valeur d'une variable chaîne, vous devez attribuer une nouvelle valeur chaîne.

Un moyen simple consiste d'abord à convertir string en tranche d'octet ou de rune, à apporter des modifications et à reconvertir :

s := []byte(str[0])
s[2] = 'y'
str[0] = string(s)
fmt.Println(str)
Copier après la connexion

Cela affichera (essayez-le sur Go Playground) :

[teyt testing]
Copier après la connexion

Remarque : J'ai converti la chaîne en tranche byte car c'est ce qui se passe lorsque vous indexez une chaîne : elle indexe ses octets. byte 切片,因为这就是您索引字符串时发生的情况:它索引其字节。 string Stocke une séquence de texte UTF-8 octets, qui ne mappe pas nécessairement les octets aux caractères un à un.

Si vous devez remplacer le deuxième caractère, utilisez plutôt []rune :

s := []rune(str[0])
s[2] = 'y'
str[0] = string(s)
fmt.Println(str)
Copier après la connexion

Dans cet exemple, cela n'a pas d'importance, mais en général, c'est probablement le cas.

Notez également que strings.Replace() ne remplace pas (nécessairement) toutes les occurrences de :

func Replace(s, old, new string, n int) string
Copier après la connexion

Paramètre n indique le nombre maximum de substitutions à effectuer. Par conséquent, ce qui suit fonctionne également (essayez-le sur Go Playground) :

str[0] = strings.Replace(str[0], "s", "y", 1)
Copier après la connexion

Une autre solution pourrait être de découper la chaîne jusqu'au caractère remplaçable et de commencer par le caractère après le caractère remplaçable, puis de les concaténer (dans Aller au terrain de jeu) :

str[0] = str[0][:2] + "y" + str[0][3:]
Copier après la connexion

Des précautions doivent être prises ici aussi : l'index de tranche est un index d'octets, pas un index de caractère (rune).

Voir les questions connexes : Chaînes immuables et adresses de pointeurs p>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!