簡體   English   中英

如何拆分此字符串(Java)?

[英]How do I split this String (Java)?

我想分割String String line = "20E WED 01PM 0E"; 這樣我為每個“零件”都有變量,其中零件看起來像這樣:

int fDegree = 20;
String fDegreeEW = "E";
String day = "WED";
int time = 01;   \\ '1' is fine too
String amPm = "PM";
int sDegree = 0;
String sDegreeEW = "E";

我當時想先在空格處分割String line ,然后在每個部分上進行regex以獲取數據,但我無法使其正常工作。 將這樣的字符串拆分為一堆不同的變量的最好方法是什么? 注意:這不是我要檢查的唯一字符串。 例如,第一個“ 20”也可以是“ 1”或“ 165”,因此單詞和數字不一定具有設置的長度。 但是數字,單詞,空格,單詞,空格,數字,單詞,空格,數字,單詞的模式將始終為真。

編輯:我試過:

String line = "20E WED 01PM 0E";
String[] splitArray = line.split(" ");
Scanner scanner = new Scanner(splitArray[0]);
int fDegree = scanner.nextInt();

但這引發了InputMismatchException 我可以在這里使用掃描儀嗎?

這個正則表達式可以做到:

(\d+)(\w+)\s+(\w+)\s+(\d+)(\w+)\s+(\d+)(\w+)

有關演示,請參見regex101 (請查看右側的 “匹配信息”窗格)。

編碼方法如下:

Pattern p = Pattern.compile("(\\d+)(\\w+)\\s+(\\w+)\\s+(\\d+)(\\w+)\\s+(\\d+)(\\w+)");

String line = "20E WED 01PM 0E";
Matcher m = p.matcher(line);
if (! m.matches())
    throw new IllegalArgumentException("Bad input: " + line);
int    fDegree   = Integer.parseInt(m.group(1));
String fDegreeEW = m.group(2);
String day       = m.group(3);
int    time      = Integer.parseInt(m.group(4));
String amPm      = m.group(5);
int    sDegree   = Integer.parseInt(m.group(6));
String sDegreeEW = m.group(7);

模式變量p可以在每行中重復使用。

Johnny對Scanner的看法是正確的,但您還應該考慮如何輸入數據。 如果給定圖案長度,則拆分此信息會容易得多。

例如,如果您輸入的行是“ 020 E WED 13 000 E”,那么您要做的就是根據標記“”(空格)進行拆分。 然后,您將獲得一個三位數的學位,您的基本方向,星期幾,24小時制(13)的1:00 pm,另一個三位數的學位(我假設您永遠不會超過360度),以及另一個基本方向。

如果您需要將此信息保存在數據結構(如數組)中以備后用,則可以使用line.split()或StringTokenizer。

您不使用那樣的掃描儀。 掃描程序通常用於讓用戶向系統輸入值。 如果要打印所有值,我建議這樣做:

String line = "20E WED 01PM 0E";
String[] splitted = line.split(" ");
for(int i = 0; i < splitted.length(); i++){
System.out.println(splitted[i]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM