【问题标题】:Difference between two strings C#两个字符串C#之间的区别
【发布时间】:2016-10-18 16:03:51
【问题描述】:

假设我有两个字符串:

string s1 = "hello";
string s2 = "hello world";

有没有办法获得string s3 = " world";,这是两个字符串之间的区别?

编辑:

区别总是在这种情况下

s1 = "abc"
s2 = "abcd ads as "

【问题讨论】:

  • 您需要更清楚地定义差异。 s1 = "hello!"s2 = "hello world!"的场景呢?还是s1 = "bob the builder"s2 = "the bob"?是否总是只包含另一个字符串的确切子字符串?
  • 更复杂的区别呢……比如,“abc”与“1bC4”

标签: c# string


【解决方案1】:

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

编辑:请注意,s2 中出现的所有 s1 都不会出现在 s3 中。请务必仔细考虑这篇文章中的 cmets,以确认这是您想要的结果,例如 @mellamokb 的评论中提到的场景。

【讨论】:

  • 请记住,如果 s1 在 s2 中出现多次,则可能存在问题。如果 s2="hello hello" 那么这将只返回一个空格,因为 "hello" 匹配了多次。
  • @JB King - 同意,我认为 OP 需要更多关于“差异”究竟是什么意思的信息。 +1 对 mellamokb 的评论
【解决方案2】:
string s1 = "hello";
string s2 = "hello world";
string s3 = s2.replace(s1,"");

【讨论】:

  • 你在回答这个问题上排名第二,我试着把我的答案写出来,但已经有 2 个答案了
【解决方案3】:

如果您定义的情况是正确的,另一种解决方案是:

string s3 = s2.substring(s1.Length);

这是假设第二个字符串以与第一个字符串完全相同的字符开头,而您只是想删除最初的重复。

【讨论】:

    【解决方案4】:

    简单的替换

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

    【讨论】:

      【解决方案5】:

      如果(大“如果”)s1 始终是s2 的子字符串,那么您可以使用.IndexOf.Length 来查找s2s1 的位置。

      【讨论】:

        【解决方案6】:

        代码外无条件的第一个答案:

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

        【讨论】:

          猜你喜欢
          • 2013-07-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-18
          • 1970-01-01
          • 2013-02-04
          • 2011-08-22
          • 1970-01-01
          相关资源
          最近更新 更多