使用正则表达式删除字符串+分隔符

时间:2018-11-21 12:40:11

标签: c# regex string

我有一个字符串行

"Arvydas,(g. 1964 m. gruodžio 19 d. Kaune) – Lietuvos krepšininkas,"

我需要删除由Console.ReadLine()决定的特定单词以及其后跟的特殊字符-字符串行中的“。,!?:;()'”

string word = Console.ReadLine();
        string text = "Arvydas,(g. 1964 m. gruodžio 19 d. Kaune) – Lietuvos krepšininkas,";
        Regex.Replace(text, " ", ".,!?:;()'" );

2 个答案:

答案 0 :(得分:0)

首先,要测试您的正则表达式:https://regex101.com/r/WDOqRc/2

然后代码变为:

    string word = Console.ReadLine();
    string text = "Arvydas,(g. 1964 m. gruodžio 19 d. Kaune) – Lietuvos krepšininkas,";
    text = Regex.Replace(text, $"{word}[.,!?:;()']?", String.Empty);

答案 1 :(得分:0)

让我们摆脱特殊字符(我建议特殊字符是 any ,除了 letter digit 撇号 >):

  string text = "Arvydas,(g. 1964 m. gruodžio 19 d. Kaune) – Lietuvos krepšininkas,";

  // Arvydas g 1964 m gruodžio 19 d Kaune Lietuvos krepšininkas  
  string result = Regex.Replace(text, @"[\W-[']]+", " ");

然后删除word

 string word = "Kaune"; 

 // removing word
 result = Regex
   .Replace(result, "\\b" + Regex.Escape(word) + "\\b", " ", RegexOptions.IgnoreCase);

 // removing double spaces if any
 result = Regex
   .Replace(result, "\\s{2,}", " ");

 Console.WriteLine(result);

结果:

 Arvydas g 1964 m gruodžio 19 d Lietuvos krepšininkas 

或将其包装到例程中

string word = Console.ReadLine();

string text = "Arvydas,(g. 1964 m. gruodžio 19 d. Kaune) – Lietuvos krepšininkas,";

string text = Regex.Replace(text, @"[\W-[']]+", " ");

if (!string.IsNullOrWhiteSpace(word)) {
  text = Regex
    .Replace(text, "\\b" + Regex.Escape(word) + "\\b", " ", RegexOptions.IgnoreCase);

  text = Regex
    .Replace(text, "\\s{2,}", " ");
}