2014-11-22 71 views
0

林從.txt文件中讀取Java中的字符串說:在Java中從一個字符串currectly切割信息

ë1 2 W1

(有它的IM在一個字符串變量) 現在我想切信息爲3個變量:

v1 = 1 
v2 = 2 
w = 1 

問題是數字可能示例中佔據更多的字節:

E 12 204 W1

我該如何輕鬆將第二,第三和第四個單詞轉化爲不同的變量?

回答

0
String src = "E 12 204 W1"; 
    String[] numbers = src.split("\\D+"); 
    int v1 = Integer.parseInt(numbers[1]); 
    int v2 = Integer.parseInt(numbers[2]); 
    int w = Integer.parseInt(numbers[3]); 

split的這個特定版本刪除了所有不是數字的東西。第一個元素(numbers[0])將是一個空字符串,因此您可以忽略它。其他人將是數字,只有數字,所以你可以安全地將它們解析爲整數(除非你認爲有人會輸入大量數字,例如98798765465498798798754,在這種情況下,你會得到一個異常,你應該趕上並處理它)。

+0

非常感謝您的幫助!你解決了它! – Eran 2014-11-22 19:10:31

0

使用split()

public static void main (String[] args) throws java.lang.Exception 
{ 
    String string = "E 12 204 W1"; 
    String[] parts = string.split(" "); 
    System.out.println(parts[1]); 
    System.out.println(parts[2]); 
    System.out.println(parts[3]); 
} 
+0

我已經使用了split命令,它在一秒鐘內解決了它,非常感謝!我如何構建和使用正則表達式來只讀數字並轉儲'W'? – Eran 2014-11-22 19:07:17

+0

@Eran請標記爲答案,如果有幫助 – Lrrr 2014-11-22 19:07:52

1

有此問題的許多解決方案。訪問String API查看可滿足您需求的所有方法。

我不會告訴你一個完整的解決方案,但我會盡力引導你。

如果模式是固定的,您可以很容易地編寫一個方法,該方法是字符串並在循環中分配第二,第三和第四個變量。

您還可以構建一個正則表達式,爲您提取所需的字段,例如, \d+\s+\d+\s+\w\d+

1

如果

E    12   204   W1 
<token><space><token><space><token><space><token> 
0    1   2    3 

是您的格式,那麼你可以只split在指數3使用" ",並獲得與指數1和2的元素,從元素的字符串中刪除龍頭W