只删除字符串ArrayList中的最后一个字

问题描述:

我试图删除字符串Arraylist中的最后一个字。只删除字符串ArrayList中的最后一个字

public static void main(String[] args) { 
    ArrayList<String> list = new ArrayList<String>(); 
    list.add("8.4 8.4"); list.add("6.5 8.0"); list.add("5.0 6.3 10.0"); 
    ArrayList<String> restlist = new ArrayList<String>(); 
    ArrayList<String> lastlist = new ArrayList<String>(); 
    for(String str : list) { 
     String everything = str.trim(); 
     String[] words = everything.split(" "); 
     String lastWord = words[words.length - 1]; 
     String restWords = everything.replace(lastWord, ""); 
     lastlist.add(lastWord); 
     restlist.add(restWords); 
    } 
    System.out.println(restlist); 
    System.out.println(lastlist); 
} 

如果我跑我的代码,它打印出:

[ , 6.5 , 5.0 6.3 ] 
[8.4, 8.0, 10.0] 

的问题是,它还会删除第8.4和我只是想去掉最后一个。

因为要休息的最后一个字分开,也许用“lastIndex的()”和“子串()”方法是一种更好的方式:

for(String str : list) { 
    String everything = str.trim(); 
    int lastPos = everything.lastIndexOf(' '); 
    if(lastPos < 0){ 
     continue; //check if there is a space char 
    } 
    String lastWord = everything.substring(lastPos + 1); 
    String restWords = everything.substring(0,lastPos) 
    lastlist.add(lastWord); 
    restlist.add(restWords); 
} 
+0

谢谢,这只是它的工作原理! – Barkork

你可以试试这个:

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    ArrayList<String> list = new ArrayList<String>(); 
    list.add("8.4 8.4"); list.add("6.5 8.0"); list.add("5.0 6.3 10.0"); 
    ArrayList<String> restlist = new ArrayList<String>(); 
    ArrayList<String> lastlist = new ArrayList<String>(); 
    for(String str : list) { 
     String everything = str.trim(); 
     String[] words = everything.split(" "); 
     String lastWord = words[words.length - 1]; 
     String restWords = everything.substring(0,everything.length() - lastWord.length()); 
     lastlist.add(lastWord); 
     restlist.add(restWords); 
    } 
    System.out.println(restlist); 
    System.out.println(lastlist); 
} 

或者你可以先创建一个表;然后删除最后一列。


public static void main(String[] args) { 
ArrayList<String> list = new ArrayList<String>(); 
     list.add("8.4 8.4"); 
     list.add("6.5 8.0"); 
     list.add("5.0 6.3 10.0"); 
     List<List<String>> split = new ArrayList<List<String>>(); 
     for (String str : list) { 
      String[] strSp = str.split(" "); 
      List<String> row = new ArrayList<>(); 
      split.add(row); 
      for (int i = 0; i < strSp.length - 1; i++) { 
       row.add(strSp[i]); 
      } 
     } 
     System.out.println("without last column=> " + split); 
} 

public static void main(String[] args) { 
     ArrayList<String> list = new ArrayList<String>(); 
     list.add("8.4 8.4"); 
     list.add("6.5 8.0"); 
     list.add("5.0 6.3 10.0"); 
     List<List<String>> split = new ArrayList<List<String>>(); 
     for (String str : list) { 
      String[] strSp = str.split(" "); 
      List<String> row = new ArrayList<>(); 
      split.add(row); 
      Collections.addAll(row, strSp); 
     } 
     System.out.println("all=> " + split); 
     System.out.println(); 

     System.out.println("without last column=> "); 
     for (List<String> strings : split) { 
      for (int i = 0; i < strings.size() - 1; i++) { 
       System.out.print(strings.get(i) + " "); 
      } 
      System.out.println(); 
     } 

     System.out.println(); 
     System.out.print("last columns=> "); 
     for (List<String> strings : split) { 
      System.out.print(strings.get(strings.size() - 1) + " "); 
     } 

    } 

这将是很好的点移动到一个函数的字符串删除最后一个单词的责任。请尝试验证码

private static ArrayList<String> lastlist = new ArrayList<String>(); 

public static void main(String[] args) { 
    ArrayList<String> list = new ArrayList<String>(); 
    list.add("8.4 8.4"); list.add("6.5 8.0"); list.add("5.0 6.3 10.0"); 
    ArrayList<String> restlist = new ArrayList<String>(); 
    for(String str : list) { 
     String restWords = cutOffLastWord(str); 
     if (restWords.trim().length()>0) { 
      restlist.add(restWords); 
     } 
    } 
    System.out.println(restlist); 
    System.out.println(lastlist); 
} 

private static String cutOffLastWord(String inputText) { 
    String outputText = ""; 
    String[] words = inputText.split("\\s+"); 
    if (words.length > 1) { 
     for (int i=0; i<words.length-1; i++) { 
      if (i>0) outputText += " "; 
      outputText += words[i]; 
     } 
    } 
    lastlist.add(words[words.length-1]); 
    System.out.println(words[words.length-1] + " removed from " + inputText); 

    return outputText; 
} 

}

这将是输出:

8.4从8.4 8.4

8.0移除从6.5 8.0

10.0除去从5.0 6.3除去10.0

[8.4,6.5,5.0 6.3]

[8.4,8.0,10.0]

其他的事情是什么时候发生只有一个词?正如我在其他答案中看到的那样,它会失败。