也许这个问题有点困惑。 我将以更好的方式解释这一点 看这个代码
string myfirststring = "hello1,hello123,content";
string_2 = "ent";
if (myfirststring.Contains(string_2)){
Console.WriteLine("Yes! this is included in the 1 string");
//then check if string_2 is equal to the 3 element of 1 string: content
}
现在我想检查一下我包含的字符串" string_2"完全等于myfirststring的3个元素:content(在这种情况下不是因为值是ent而不是内容所以ent!= content) 那我怎么检查呢?
答案 0 :(得分:5)
如果单词以逗号分隔,您可以执行以下操作:
var exactlyContained = myFirstString.Split(',').Any(w => w == string_2);
如果在任何其他情况下找到完全匹配,true
,则会返回false
。
更新
根据评论,您的字符串似乎包含由不同符号序列分隔的单词。也许你可以使用这种自定义拆分方法(你可以根据你的特定需求进行调整,我不需要提供很多信息):
public static IEnumerable<string> CustomSplit(this string s)
{
var buffer = new StringBuilder();
foreach (var c in s)
{
if (!char.IsLetterOrDigit(c))
{
if (buffer.Length > 0)
{
yield return buffer.ToString();
buffer.Clear();
}
}
else
{
buffer.Append(c);
}
}
if (buffer.Length > 0)
yield return buffer.ToString();
}
现在代码将是:
var exactlyContained = myFirstString.CustomSplit().Any(w => w == string_2);
答案 1 :(得分:1)
因为你的字符串没有指定的分隔符并且跟随你的示例字符串,我会减少所有非字母数字字符并重新创建你的myFirstString
。
string myFirstString = "hello1,hello123,content";
string yourSecondString = "ent";
首先我定义一个分隔符,我需要在末尾进行分割。
char delimiter = '#';
现在我创建一个新的StringBuilder
来有效地添加找到的字符,并设置我想要检查的字符是否以非字母数字字符结束。
var firstStringBuilder = new StringBuilder();
char previousChar = delimiter;
准备完成后,我遍历字符串中的所有字符,并将所有字符添加到StringBuilder
,并将所有非字母数字字符缩减为单词之间的单个分隔符。
foreach (char singleChar in myFirstString)
{
if (Char.IsLetterOrDigit(singleChar))
{
firstStringBuilder.Append(singleChar);
previousChar = singleChar;
}
else if(Char.IsLetterOrDigit(previousChar))
{
firstStringBuilder.Append(delimiter);
previousChar = singleChar;
}
}
完成循环后,我会检查是否有任何单词匹配yourSecondString
bool matched = firstStringBuilder.ToString()
.Split(delimiter)
.Any(str => string.Equals(str, yourSecondString));
答案 2 :(得分:1)
我知道出于性能原因通常不赞成,但正如你总是处理一个单词(而不是一个句子等),正则表达式使这个查找相对简单,例如。
// regex "\b" indicates a word boundary, so surrounding your lookup string with them ensures your expression matches the entire word
if (Regex.IsMatch(myfirststring, $"\b{string_2}\b")){
Console.WriteLine("Yes! this is included in the 1 string");
//then check if string_2 is equal to the 3 element of 1 string: content
}
编辑:在if
声明