尝试从ArrayList中的字符串中删除特定单词

0 java arraylist

我正在制作一个ArrayList需要Strings,并且该类中的一个方法需要a String,在其前面加上"urgent:",并将其放在列表的开头.我现在正在编写一种方法,该方法应该采用a int,a 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:"); 
    }
}
Run Code Online (Sandbox Code Playgroud)

res*_*man 5

当你这样说:

items.remove("urgent:");
Run Code Online (Sandbox Code Playgroud)

它试图String从列表本身中删除文字"紧急",而不是从列表中的任何特定项目中删除.相反,您需要删除该文本,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); 
}
Run Code Online (Sandbox Code Playgroud)

因此,在删除之后String,您将在"紧急:"之后获取所有内容的子字符串,并将其添加回List最后.