我正在制作一个采用String
的ArrayList
,并且该类中的一个方法采用String
,添加“紧急:”到它的前面,并将其放在列表的开头。我现在正在编写一个方法,该方法应该采用 int
、一个 String
的位置,并将该字符串“降级”到列表的末尾。
但是,如果字符串前面有“urgent:”,则该方法也应该删除“urgent:”(如果它被降级)。一切都编译并运行,但它没有删除“紧急:”,我不知道为什么。
public void addUrgetItem(String newItem) {
String urgentItem = newItem;
items.add(0, "urgent: " + urgentItem);
}
public void demote(int position) {
int size = items.size();
String itemAtSpot = items.get(position);
items.remove(itemAtSpot);
items.add((size-1), itemAtSpot);
if (itemAtSpot.startsWith("urgent:")) {
items.remove("urgent:");
}
}
最佳答案
当你这样说时:
items.remove("urgent:");
它试图从列表本身而不是列表中的任何特定项目中删除文字String
“urgent”。相反,您需要先从 itemAtSpot
中删除该文本,然后再将其添加回 List
中。看起来像这样:
public void demote(int position) {
int size = items.size();
String itemAtSpot = items.get(position);
items.remove(itemAtSpot);
if (itemAtSpot.startsWith("urgent: ")) {
itemAtSpot = itemAtSpot.substring("urgent: ".length());
}
items.add(itemAtSpot);
}
因此,在删除 String
后,您将获取“urgent:”之后所有内容的子字符串,并将其添加回末尾的 List
中。
关于java - 尝试从 ArrayList 中的字符串中删除特定单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36273664/