J'ai une chaîne comme ci-dessous.Rechercher et remplacer dans une chaîne
string data = "A := B;\nC:=D";
La chaîne doit être remplacée par SET
déclaration ci-dessous.
data = "SET A=B;\nSET C=D"
Il devrait remplacer :=
avec = and insert a
déclaration set`.
Je suis sorti avec un algorithme comme ci-dessous mais cela ne fonctionne pas quand j'ai plusieurs :=
.
Existe-t-il un autre moyen plus simple et efficace de gérer cela? Peut-être en utilisant RegEx?
private string AddSETStatement(string script)
{
script = script.Replace(": =", ":=");
script = script.Replace(":=", ":= ");
script = script.Replace(" :=", ":= ");
int found = script.IndexOf(":=");
while (found > -1)
{
int foundspace = -1;
for (int index = found; index >= 0; index--)
{
string temp = script.Substring(index, 1);
if (temp == " ")
{
foundspace = index;
break;
}
}
script = script.Remove(found, 1);
if (foundspace == -1)
{
script = "SET " + script;
}
else
{
script = script.Insert(foundspace, " SET ");
}
found = script.IndexOf(":=");
}
return script.Trim();
}
Toute aide serait appréciée.
S'il vous plaît il suffit d'utiliser les balises nécessaires. Cela n'a rien à voir avec Visual Studio 2010 et n'est pas spécifique à C# 3.0 ou 4.0. C'est une question générique de remplacement de chaîne en C#, et les balises inutiles ajoutent simplement du bruit qui n'est pas utile. Merci. :) –
L'entrée est-elle connue pour être bien formée? C'est-à-dire, est-ce garanti que vous n'aurez jamais quelque chose comme ": = choses aléatoires ici: ==="? Aussi, que savez-vous des variables qui précèdent et suivent le ': ='? Seront-ils toujours un personnage long? –
@Ken, désolé à ce sujet.Encore tout à fait nouveau à empiler débordement – balan