我会定期检查从Web服务获取的字符串是否发生了变化。这工作正常,但如果从我的方法触发器中删除旧字符串也是如此。 例如:
//I get this at the beginning
"One,Two,Three"
//And at the next check I get this
"Two,Three"
所以String改变了,我的方法返回true就像它应该做的那样。 但是我只想要返回true,例如字符串中添加了“四”。
有人能为我解决这个问题吗?
非常感谢,
冷冻
答案 0 :(得分:1)
if (!oldstring.contains(newstring)))
return true;
答案 1 :(得分:0)
像
这样的东西newString.contains(oldString) && !newString.equals(oldString)
答案 2 :(得分:0)
为什么不在字符串长度增加时触发?这个问题并没有说明所添加的内容很重要 - 只是根本没有添加内容。
boolean result = false;
if(newString.length() > oldString.length()) {
result = true;
break;
}
return result;
编辑:基于进一步澄清,我理解字符串的长度不是最佳指标,因为可以同时删除和添加某些内容,在这种情况下OP希望true
返回 - 甚至如果长度较短。这是一个将字符串拆分为标记的解决方案,然后检查旧字符串的最后一个标记是否出现在新字符串的最后一个标记之前,因为这意味着在它之后添加了一些内容:
boolean result = false;
String delim = ",";
String oldStringTokens[] = oldString.split(delim);
String newStringTokens[] = newString.split(delim);
for(int i = 0; i < newStringTokens.length; i++) {
if(oldStringTokens[oldStringTokens.length-1].equals(newStringTokens[i])) {
if(i < newStringTokens.length - 1) {
result = true;
}
}
}
return result;
答案 3 :(得分:0)
也许你可以这样使用split
public class MyClass {
public static void main(String args[]) {
String oldString = "This,Is,A,Test";
String[] oldItems = oldString.split(",");
String newString = "This,Is,A,New";
String[] newItems = newString.split(",");
// For each new item, check all old items
for (String newItem: newItems)
{
Boolean foundItem = false;
for (String oldItem: oldItems)
{
// Item was already in the old items
if (newItem.equals(oldItem))
{
foundItem = true;
break;
}
}
// New item is not in the old list of items
if (!foundItem)
{
System.out.println("New item added: " + newItem);
}
}
}
}