所以这是我的例子
string test = "Hello World, I am testing this string.";
string[] myWords = {"testing", "string"};
如何检查字符串测试是否包含以下任何字词?如果它确实包含我如何制作它以便它可以用等于其长度的星号替换那些单词?
答案 0 :(得分:3)
您可以使用正则表达式:
public string AstrixSomeWords(string test)
{
Regex regex = new Regex(@"\b\w+\b");
return regex.Replace(test, AsterixWord);
}
private string AsterixWord(Match match)
{
string word = match.Groups[0].Value;
if (myWords.Contains(word))
return new String('*', word.Length);
else
return word;
}
我检查了代码,似乎按预期工作。
如果myWords中的单词数量很大,您可以考虑使用HashSet以获得更好的性能。
答案 1 :(得分:2)
var containsAny = myWords.Any(x => test.Contains(x));
答案 2 :(得分:2)
bool cont = false;
string test = "Hello World, I am testing this string.";
string[] myWords = { "testing", "string" };
foreach (string a in myWords)
{
if( test.Contains(a))
{
int no = a.Length;
test = test.Replace(a, new string('*', no));
}
}
答案 3 :(得分:1)
像这样的东西
foreach (var word in mywords){
if(test.Contains(word )){
string astr = new string("*", word.Length);
test.Replace(word, astr);
}
}
编辑:精炼