我想从另一个输入的字符串中减去一个输入的字符串,但是字符串不允许使用运算符“-”。 例子
s1 = "abcdhello";
s2 = "hellothere";
//i want s3 to be like:
s3 = "abcd";
我怎么能做到这一点,我尝试了.substring,但是没有成功。
更新: 假设我有一个键和文本,让我们将s1作为组合键,将s2作为文本,我想获取uncombinedkey。
答案 0 :(得分:1)
在s1
和s2
中循环查找最长的重叠部分并返回差值或原始值
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
答案 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);