检查字符串是否包含列表中的数字,然后从字符串中删除该数字

我想检查字符串是否包含列表中的单词或数字,并将其从字符串中删除。

我想对找到的多个匹配项执行此操作。


句子读

这是01 02 03(01)(02)(03)no01 no02 no03测试


我需要Regex.Replace删除只有充分010203,内部没有换言之的人。

这是(01)(02)(03)no01 no02 no03测试


但它只会删除所有位置中匹配项列表中最后一项03的出现。

这是01 02(01)(02)()no01 no02没有测试


http://rextester.com/BCEXTJ37204

C#

List<string> filters = new List<string>();

List<string> matches = new List<string>();


string sentence = "This is a 01 02 03 (01) (02) (03) no01 no02 no03 test";

string newSentence = string.Empty;


// Create Filters List

for (int i = 0; i < 101; i++)

{

    filters.Add(string.Format("{0:00}", i)); // 01-100

}


// Find Matches

for (int i = 0; i < filters.Count; i++)

{

    // Add to Matches List

    if (sentence.Contains(filters[i]))

    {

        matches.Add(filters[i]); // will be 01, 02, 03

    }

}


// Filter Sentence

for (int i = 0; i < matches.Count; i++)

{

    newSentence = Regex.Replace(sentence, matches[i], "", RegexOptions.IgnoreCase);

}


// Display New Sentence

Console.WriteLine(newSentence);

我尝试进行更改string.Format()以@"\b{0:00}\b"匹配整个单词,但这是行不通的。


泛舟湖上清波郎朗
浏览 189回答 2
2回答

慕田峪4524236

在代码中尝试以下正则表达式:&nbsp; &nbsp; &nbsp;string sentence = "This is a 01 02 03 (01) (02) (03) no01 no02 no03 test";&nbsp; &nbsp; &nbsp;var newSentence = Regex.Replace(sentence, @"\s\d+(?=\s)", string.Empty);&nbsp; &nbsp; &nbsp;// Display New Sentence&nbsp; &nbsp; &nbsp;Console.WriteLine(newSentence);
打开App,查看更多内容
随时随地看视频慕课网APP