从另一个字符串C#中删除一个字符串

时间:2019-03-07 03:29:54

标签: c# string

我想从另一个输入的字符串中减去一个输入的字符串,但是字符串不允许使用运算符“-”。 例子

s1 = "abcdhello";
s2 = "hellothere";
//i want s3 to be like:
s3 = "abcd";

我怎么能做到这一点,我尝试了.substring,但是没有成功。

更新: 假设我有一个键和文本,让我们将s1作为组合键,将s2作为文本,我想获取uncombinedkey。

2 个答案:

答案 0 :(得分:1)

s1s2中循环查找最长的重叠部分并返回差值或原始值

public static string GetWeird(string s1, string s2)
{
    Console.WriteLine(s1);
    for (int i = Math.Max(0, s1.Length - s2.Length); i < s1.Length; i++)
    {
        var ss1 = s1.Substring(i, s1.Length - i);
        var ss2 = s2.Substring(0, Math.Min(s2.Length, ss1.Length));
        Console.WriteLine(ss2.PadLeft(s1.Length));
        if (ss1 == ss2)
            return s1.Substring(0, i);
    }

    return s1;
}

public static void Main()
{
    var s1 = "5675675756756abcdhello";
    var s2 = "hellothere";
    var s3 = GetWeird(s1, s2);
    Console.WriteLine(s3);
}

输出

5675675756756abcdhello
            hellothere
             hellother
              hellothe
               helloth
                hellot
                 hello
5675675756756abcd

Full Demo Here

答案 1 :(得分:1)

将两个字符串都转换为字符列表,如果第二个字符位于第二个列表中,则将其删除。

就这么简单

string s1 = "abcdefg";
string s2 = "efghijk";

List<char> s1l = s1.ToList();
List<char> s2l = s2.ToList();

s1l.RemoveAll(c => s2l.ToList().Exists(n => n == c));

string s3 = String.Concat(s1l);