Juste errant, comment pourrais-je remplacer une chaîne uniquement lorsqu'elle correspond à 100% dans c # .net? Par exemple, j'ai la chaîne suivante:
ABC-2 ABC-1.1 ABC-1.1~1
J'utilise le script suivant pour remplacez la chaîne:
ABC-2 ABC-2.1 ABC-2.1~1
Pour le moment, le résultat est comme suit:
a.Replace("ABC-1", "ABC-2");
Au lieu de cela, je cherche pour la sortie est comme:
StringBuilder a = new(StringBuilder); a = "ABC-1 ABC-1.1 ABC-1.1~1"
Est-ce que quelqu'un sait comment puis-je le faire?
4 Réponses :
Cela peut aider:
"ABC-2 ABC-1.1 ABC-1.1~1"
Résultat:
var a = "ABC-1 ABC-1.1 ABC-1.1~1";
var result = String.Join(" ", a.Split(' ').Select(x=>x=="ABC-1"? "ABC-2":x));
Le " doublon " étant lié à serait une bonne solution si votre entrée ne contenait pas de ponctuation signalant la fin d'un mot. Donc le Regex dans ce fil ne fonctionne pas tel quel.
Vous devriez pouvoir utiliser un lookahead négatif cependant.
var a = "ABC-1 ABC-1.1 ABC-1.1~1"; a = Regex.Replace(a, @"\bABC-1\b(?!\S)", "ABC-2"); Console.WriteLine(a); // ABC-2 ABC-1.1 ABC-1.1~1
Il affirme essentiellement que le caractère après le terme de recherche n'est pas un caractère non blanc (mais correspond également si c'est la fin de la chaîne).
Pour faire correspondre le mot exact, utilisez regex @"(^|\s)ABC-1.1(\s|$)";
string a = "ABC-1 ABC-1.1 ABC-1.1~1";
string pattern = @"(^|\s)ABC-1.1(\s|$)";
string replace = Regex.Replace(a, pattern , " test ");
Console.WriteLine(replace);
output Test ABC-1 ABC-1.1 ~ 1
Si vous souhaitez remplacer uniquement la première occurrence, cette méthode peut vous aider:
public static string ReplaceFirst(this string original, string oldValue, string newValue)
{
var index = original.IndexOf(oldValue);
if (index >= 0) {
var prev = original.Substring(0, index);
var after = original.Substring(index + oldValue.Length);
return prev + newValue + after;
}
return original;
}
Qu'est-ce qui rend quelque chose «complet»? Voulez-vous dire "un mot doit être entouré d'espaces (ou être au début ou à la fin de la chaîne) - et je veux faire correspondre le mot entier"? Si tel est le cas, utilisez
string.Split. Parcourez le tableau et remplacez les entrées du tableau là où elles correspondent exactement (==). Ensuite,string.Rejoignez-lesensemble.