我有两个字符串如下:
string s1=@"hello my name is ""othden"" can I meet you";
string s2=@"hello my name is can I meet you";
我想在s1中找到s2,所以结果应该返回true(这意味着我在s2
中找到s1
)忽略"othden"
,因为它在引号内。如何在忽略字符串部分的同时进行此搜索?
答案 0 :(得分:3)
您可以替换这些情况的所有出现,并创建一个全新的规范化字符串(只是为了保留原始字符串)。
然后,你只需要使用规范化的字符串进行任何你想要进行的比较。
string s1 = @"hello my name is ""othden"" can I meet you";
string s2 = "hello my name is can I meet you";
string normalized_s1 = Regex.Replace(s1, "\"[^\"]*\"", String.Empty);
bool areEquals = (s2 == normalized_s1);
正则表达式\"[^\"]*\"
表示以下内容:
\"
字面匹配字符"
。 [^\"]
匹配任何不是"
2.A。 零和无限次之间的*
。
\"
字面匹配字符"
答案 1 :(得分:-1)
有点不清楚你想要什么,但是这样的事情应该这样做。
string s1=@"hello my name is ""othden"" can I meet you";
string s2=@"hello my name is can I meet you";
string temp = s1.Replace(" \"othden\"", String.Empty);
bool b = s2.Contains(temp);
你不一定只是"忽略"字符串的一部分,而不是你需要创建一个新的,临时的'不包含您知道的值的字符串并不重要。
如果您想在引号之间忽略任何,那么您需要这样的内容:
string s1=@"hello my name is ""othden"" can I meet you";
string s2=@"hello my name is can I meet you";
int fqi = s1.IndexOf('"');
int lqi = s1.LastIndexOf('"');
string temp = s1.Remove(fqi, (lqi - fqi));
temp = temp.Replace("\" ", String.Empty);
bool b = s2.Contains(temp);