Attualmente sto lavorando a un progetto di traduzione. Uno dei problemi che ho riscontrato è quando sto cercando di sostituire le parole caratteri speciali.Come sostituire [Word] con Word usando Regex.Replace e dovrebbe sostituire solo la parola intera
Ad esempio:
[Animal] can be furry.
Dog is an [Animal].
Ho bisogno di sostituire [Animal]
con Animal
. Si prega di prendere atto che ho bisogno di sostituire solo la parola intera. Quindi il risultato dovrebbe essere il seguente:
Animal can be furry.
Dog is an Animal.
Inoltre, come ho detto, dovrebbe essere l'intera parola. Quindi, se ho:
[Animal][Animal][Animal] can be furry.
- il risultato dovrebbe essere ancora
[Animal][Animal][Animal] can be furry.
- non è successo niente, come [Animal]
non è l'esempio stesso di [Animal][Animal][Animal]
:
string originalText1 = "[Animal] can be furry";
string badText ="[Animal]";
string goodText = "Animal";
Regex.Replace(originalText1, Regex.Escape(badText), Regex.Escape(goodText));
tutto è OK. Ma come ho già detto, ho bisogno che l'intera parola venga sostituita. E con il codice sopra, "[Animal]can be furry
" sarà sostituito da "Animalcan be furry
" che è un no no.
così ho anche provato:
Regex.Unescape(
Regex.Replace(
Regex.Escape(originalText1),
String.Format(@"\b{0}\b", Regex.Escape(badText)),
Regex.Escape(goodText)))
Ancora non funziona però. E ora sono perso. Per favore aiuto.
Vorrei anche menzionare che c'è un post QUASI simile, ma quella domanda non richiedeva la sostituzione di solo parole intere. Ho guardato oltre la rete per quasi 3 ore senza successo. Il tuo aiuto sarà molto apprezzato. Grazie!
Permettetemi per "pubblicizzare" [.Net RegExp CheatSheet] (http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet) è molto utile linkto a portata di mano :) – quetzalcoatl
Questo non corrisponde a nessuno degli esempi forniti nella domanda, perché '[' e ']' * non * contengono un limite di parole. Questo corrisponderà ad esempio "A [Animale] A' ma non" [Animale] '. – verdesmarald
Grazie ragazzi. E sì, quello ha funzionato. Ma per quanto posso, non voglio usare \ [, cosa succede se sono altri personaggi di escape? è per questo che ho usato il Regex.Escape. – IPPO20jr