Как использовать Regex.Replace, чтобы заменить две строки одновременно? - PullRequest
2 голосов
/ 25 июня 2009

У меня есть следующий метод, который заменяет знак «фунт» в имени файла, но я также хочу иметь возможность заменить «одиночный апостроф» одновременно. Как мне это сделать? Это значение имени файла = Поставщик license_A'R_Ab # acus Settlements_1-11-09.xls

static string removeBadCharPound(string filename)
{            // Replace invalid characters with "_" char.            
    //I want something like this but is NOT working 
    //return Regex.Replace(filename, "# ' ", "_");
    return Regex.Replace(filename, "#", "_");
 }

Ответы [ 2 ]

18 голосов
/ 25 июня 2009

Попробуйте

return Regex.Replace(filename, "[#']", "_");

Имейте в виду, я не уверен, что регулярное выражение, скорее всего, будет быстрее, чем несколько более простое:

return filename.Replace('#', '_')
               .Replace('\'', '_');
7 голосов
/ 25 июня 2009

И ради интереса вы можете сделать то же самое с LINQ:

var result = from c in fileName
             select (c == '\'' || c == '#') ? '_' : c;
return new string(result.ToArray());

Или, сжатый до сексуального однострочного:

return new string(fileName.Select(c => c == '\'' || c == '#' ? '_' : c).ToArray())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...