2016-02-18 50 views
0

我正在將帳戶詳細信息(帳戶名稱和帳戶餘額)讀取到字符串數組中。典型值將如{"Cash on hand -4871266","SB Account 976369","Current Account 980980"}。我想將字符串數組拆分爲兩個 - 第一個數組應包含帳戶名稱,第二個數組應包含帳戶餘額。由於帳戶名稱可能包含空格,因此無法根據空白拆分數組。我如何在Java中實現這一點將字符串拆分爲數字數據和其他數字數據

+0

分裂接受正則表達式,所以你可以拆分在最後一個空白處 – SomeJavaGuy

+0

看看正則表達式(java.util.regex.Pattern)。然後你可以像「字符組」分割空白「數字」 –

+0

尋找最右邊的空間:) https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#lastIndexOf( INT) – Koshinae

回答

1

您可以使用substring()進行拆分,並使用lastIndexOf()來獲取最後一個空格索引。

String x[] = {"Cash on hand -4871266","SB Account 976369","Current Account 980980"}; 
String arr1[] = new String[x.length], arr2[] = new String[x.length]; 

for(int i=0; i<x.length; i++) 
{ 
    arr1[i] = x[i].substring(0,x[i].lastIndexOf(" ")); //account name 
    arr2[i] = x[i].substring(x[i].lastIndexOf(" ")+1); //value 
} 
0

如果帳戶名犯規包括數字,那麼你可以用行話-?\\d+剝離出量

Pattern p = Pattern.compile("-?\\d+"); 
String[] accounts = {"Cash on hand -4871266","SB Account 976369","Current Account 980980"}; 
for(String account : accounts){ 
    Matcher m = p.matcher(account); 
    while (m.find()) { 
     System.out.println(m.group()); 
    } 
} 
0

試試下面的辦法:

public class Main { 

    public static void main(String[] args) { 
     List<String> stringList = new ArrayList<>(); 

     stringList.add("Cash on hand -4871266"); 
     stringList.add("SB Account 976369"); 
     stringList.add("Current Account 980980"); 

     for (String str : stringList) { 
      // Extracts the left hand-side of your string 
      System.out.println(str.replaceAll("[\\s-+][0-9]+", "")); 
      // Extracts the right hand-side of your string 
      Pattern testPattern = Pattern.compile("[\\s-+][0-9]+"); 
      Matcher matcher = testPattern.matcher(str); 
      matcher.find(); 
      System.out.println(matcher.group().trim()); 
     } 
    } 

}