我想检查字符串是否包含列表中的单词或数字,并将其从字符串中删除。
我想用来Enumerable.Range()创建过滤器列表,并用它来过滤许多不同的字符串。
我试图结合之前的两个答案:
https : //stackoverflow.com/a/49733139/6806643
https://stackoverflow.com/a/49740832/6806643
我要过滤的句子:
这是A05B09你好02100测试
筛选
A00B00-A100B100,01-100,000-100,hello
应该读:
这是一个测试
旧方法
For Loop-作品
http://rextester.com/BJL70824
新方法
Enumerable Range List-不起作用
http://rextester.com/ZSCM64375
C#
List<List<string>> filters = Enumerable.Range(0, 101)
.SelectMany(a => Enumerable.Range(0, 101).Select(b => "A{0:00}B{1:00}"))
.Select(i => Enumerable.Range(0, 10).Select(c => string.Empty).ToList())
.SelectMany(a => Enumerable.Range(0, 101).Select(b => "{0:000}"))
.SelectMany(a => Enumerable.Range(0, 101).Select(b => "{0:00}"))
.SelectMany(a => Enumerable.Range(0, 1).Select(b => "hello"))
.ToList();
List<string> matches = new List<string>();
// Sentence
string sentence = "This is a A05B09 hello 02 100 test";
string newSentence = string.Empty;
// Find Matches
for (int i = 0; i < filters.Count; i++)
{
// Add to Matches List
if (sentence.Contains(filters[i].ToString()))
{
matches.Add(filters[i]);
}
}
// Filter Sentence
newSentence = Regex.Replace(
sentence
, @"(?<!\S)(" + string.Join("|", matches) + @")(?!\S)"
, ""
, RegexOptions.IgnoreCase
);
// Display New Sentence
Console.WriteLine(newSentence);
撒科打诨
相关分类