是否有可能,以及如何获得字符串的更改部分?
让我们说我不断检查字符串是否有变化但是当它确实改变时,变化是在字符串中随机的某个地方而不是在同一个地方。我如何找出更改的内容并将其存储在单独的字符串中?
String Original = "Random Text";
String Changed = "ra7ndom Text"
String Output = "7";
public void getChange() {
// ??
}
I need to get what was added to the string, after it was modified.
答案 0 :(得分:1)
我的解决方案是:
public int getFirstChangeIndex(CharSequence original, CharSequence changed)
{
int n = original.length();
for (int i = 0; i < n; i++)
{
if (original.charAt(i) != changed.charAt(i))
break;
n++;
}
}
答案 1 :(得分:0)
没有一种简单的方法/方法可以帮到你。你可以编写一个方法,它遍历两个字符串,比较每个字符并返回字符串中的差异。
查看此问题:What is the easiest/best/most correct way to iterate through the characters of a string in Java?
或者您可以使用具有更多高级功能的外部库。一个好的是Google-diff-match-patch
答案 2 :(得分:0)
另一种解决方案是使用Apache Commons StringUtils'difference
方法。
答案 3 :(得分:0)
不存在快速简便的方法,您需要比较字符串中的每个字符。请注意,字符串本身永远不会更改,它们是不可变的,但您可以比较不同的字符串。
这是我敲了一下的东西,它会告诉你第一个的区别是,随意根据你的需要进行调整:
String oldString = "abcdexghijklmn";
String newString = "abcdefghijklm";
//get length of longer string
int end = Math.max(oldString.length(), newString.length());
//loop through strings
for (int position=0; position<end; position++) {
if (position>=newString.length()) {
// Reached the end of new string
System.out.println("Difference at position "+position+" new string is shorter");
break;
} else if (position>=oldString.length()) {
// Reached the end of old string
System.out.println("Difference at position "+position+" new string is longer");
break;
} else {
//compare characters at this position
char newChar = newString.charAt(position);
char oldChar = oldString.charAt(position);
if (newChar!=oldChar) {
System.out.println("Difference at position "+position);
break;
}
}
}