2012-03-22 5 views
2

мне нужно заменить неправильные символы, кроме символов и цифр в моих строках с тиром символом «-»RegEx заменить неправильные символы C#

var myString = "this=is+/* [email protected]# string^&*("; 

Я использую

Regex.Replace(myString, "[^0-9a-zA-Z]+", "-"); 

и в результате он «это -is ---- неправильно ---- струна ----»

, но мне нужно "это-это-неправильно-нить"

Что я должен изменить I n мой RegEx. Благодаря!

+1

Невозможно воспроизвести. Expresso дает правильный результат. Делали ли вы что-то еще перед запуском 'Replace'? – Shimrod

+0

Пробовал это с помощью expresso. Я получаю {this-is-wrong-string-} как вывод, который кажется правильным с учетом вашего регулярного выражения. – Gishu

+0

Я пробовал ваш образец кода, и результат получается так, как вам нужно, с одной тире. –

ответ

4

Невозможно воспроизвести:

using System; 
using System.Text.RegularExpressions; 

class Test 
{ 
    static void Main() 
    { 
     var input = "this=is+/* [email protected]# string^&*("; 
     var output = Regex.Replace(input, "[^0-9A-Za-z]+", "-"); 
     Console.WriteLine(output); 
    }     
} 

Выход: this-is-wrong-string-

Таким образом, вы можете использовать TrimEnd('-'), чтобы избавиться от отстающей «-», но в остальном она выглядит хорошо для меня. Сравните свой код с моей короткой, но полной программой, и если вы не можете найти, что не так, придумайте аналогичную короткую, но полную программу, которая демонстрирует проблему.

2

Ваше регулярное выражение работает для меня:

PS> "this=is+/* [email protected]# string^&*(" -replace '[^0-9a-zA-Z]+','-' 
this-is-wrong-string- 

Но вам нужно удалить задний - впоследствии.

Смежные вопросы