我想比较两个列表并将有效的单词放入新列表中.
var words = new List<string>();
var badWords = new List<string>();
//this is just an example list. actual list does contain 700 records
words.Add("Apple");
words.Add("Moron");
words.Add("Seafood");
words.Add("Cars");
words.Add("Chicken");
words.Add("Twat");
words.Add("Watch");
words.Add("Android");
words.Add("c-sharp");
words.Add("Fool");
badWords.Add("Idiot");
badWords.Add("Retarded");
badWords.Add("Twat");
badWords.Add("Fool");
badWords.Add("Moron");
Run Code Online (Sandbox Code Playgroud)
我正在寻找最有效的方法来比较列表并将所有"好"的单词放入新的列表中.finalList不应包含"Moron","Twat"和"Fool".
var finalList = new List<string>();
Run Code Online (Sandbox Code Playgroud)
或者是否没有必要创建新的列表?我很高兴听到你的想法!
先感谢您
我目前正在学习C#和RegEx.我正在研究一个小的wordcrawler.我得到了许多单词的大清单,我可以逃避那些不适合我的RegEx的单词.
这是我的代码:
var WordRegex = new Regex("^[a-zA-Z]{4,}$", RegexOptions.Compiled | RegexOptions.CultureInvariant);
var secondRegex = new Regex("([A-Z]{1})");
var words = new List<string>();
var finalList = new List<string>();
foreach (var word in words)
{
if (WordRegex.IsMatch(word) && secondRegex.Matches(word).Count == 1 || secondRegex.Matches(word).Count == 0)
{
finalList.Add(word);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,如果单词是'McLaren'(两个大写字母),它将无法将其添加到finalList.但是如果这些单词类似于'stackOverflow'(一个大写字母但不是字符串的开头),它确实会把它作为finallist.有没有简单的方法来防止这个问题?
PS:如果有比RegEx更好的方式让我知道!
这里有些例子:
("McLaren");//false
("Nissan");//true
("BMW");//false
("Subaru");//true
("Maserati");//true
("Mercedes Benz");//false
("Volkswagen");//true
("audi");//true
("Alfa Romeo");//false
("rollsRoyce");//false
("drive");//true
Run Code Online (Sandbox Code Playgroud)
这些都是真的应该被接受而另一个不应该被接受.
我想要达到的是正则表达式不应该在它写成'rollsRoyce'时添加,但如果它写成'Rollsroyce'或'RollsRoyce'则应该被接受.所以我必须检查字符串中是否有大写字母.