C#中两个字符串的区别

20

假设我有两个字符串:

string s1 = "hello";
string s2 = "hello world";
有没有办法获取一个string s3 = " world";,该字符串是两个字符串之间的差异? 编辑: 在这种情况下,差异将始终存在。
s1 = "abc"
s2 = "abcd ads as "

9
您需要更清晰地定义“差异”。那么,如果是s1 =“hello!”s2 =“hello world!”的情况呢?或者是s1 =“bob the builder”s2 =“the bob”的情况呢?是否总是只包含另一个字符串的精确子字符串? - mellamokb
2
更复杂的差异怎么办?比如 "abc" 和 "1bC4"。 - Joel Coehoorn
6个回答

26

使用string s3 = s2.Replace(s1, "");

编辑:请注意,s2中所有的s1出现的位置都将从s3中删除。确保仔细考虑本帖子中的评论,以确认这是您所需的结果,例如@mellamokb的评论中提到的情况。


2
只需记住,如果s1在s2中出现多次,可能会出现问题。如果s2="hello hello",则返回一个空格,因为"hello"匹配了多次。 - JB King
@JB King - 同意,我认为需要更多来自OP的信息来解释“difference”具体指什么。对mellamokb的评论点赞。 - Paul Bellora

6
string s1 = "hello";
string s2 = "hello world";
string s3 = s2.replace(s1,"");

你是第二个回答这个问题的人,我试着回答但已经有两个答案了。 - Hari Gillala

5
如果你定义的情况是正确的,另一种解决方案可能是:
string s3 = s2.substring(s1.Length);

这是假定第二个字符串以与第一个字符串完全相同的字符开头,您只需要去掉初始重复部分。

5

通过简单的替换

string s3 = s2.Replace(s1, "");

2
如果(大)s1总是s2的子字符串,那么您可以使用.IndexOf.Length来查找s1s2中的位置。请注意保留原有的HTML标签格式。

1

在代码之外,第一个没有条件的答案:

string s3 = null;
if (s2.StartsWith(s1))
{
    s3 = s2.Substring(s1.Length);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接