RegEx заменить неправильные символы C # - PullRequest
2 голосов
/ 22 марта 2012

Мне нужно заменить неправильные символы, кроме символов и цифр в моей строке, на тире "-"

var myString = "this=is+/* wrong!@# string^&*(";

Я использую

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

и в результате это "this-это ---- неправильно ---- строка ---- "

но мне нужно" this-is-неправильная строка "

Что я должен изменить в своем RegEx.Спасибо!

Ответы [ 2 ]

4 голосов
/ 22 марта 2012

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

using System;
using System.Text.RegularExpressions;

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

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

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

2 голосов
/ 22 марта 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...