簡體   English   中英

拆分團隊名稱,分數用空格和逗號分隔

[英]Splitting team names with scores separated by space and commas

我有多行游戲分數作為輸入。 輸入是這樣的。

Lions 1, FCAwesome 1

我目前正在根據逗號或空格拆分該行。

Charset charset = Charset.forName("US-ASCII");
String REGEX = ",?\\s+";
Pattern pattern = Pattern.compile(REGEX);
try(BufferedReader reader = Files.newBufferedReader(path, charset)){

      int count = 0;
      String line = null;
      while((line = reader.readLine()) != null){
        String[] arr = pattern.split(line);
      }

這適用於提供的輸入。 但是,如果團隊名稱有多個單詞,我的代碼就會中斷。

Lions 1, FC Awesome 1 

如何修改我的REGEX來處理這種情況。 FC Awesome仍然需要一個團隊名稱。

嘗試分裂空間

  • 之前有逗號(包括逗號) - 用於分隔團隊分數對。
  • 在它之后有數字 - 分開球隊名稱得分

所以嘗試使用split(",\\\\s|\\\\s(?=\\\\d)")


如果團隊名稱的某些部分可能以數字開頭,我們可以更多地指定我們的條件。 我們可以要求[space][digit]以逗號后面或者放在文本末尾。

split(",\\\\s|\\\\s(?=\\\\d+(?=,|$))")

嘗試用逗號分割整個數據,然后使用下面的getTeam方法

class Team {

    String name;
    int score;

    public Team(String name, int score) {
        this.name = name;
        this.score = score;
    }

    @Override
    public String toString() {
        return this.name + ", " + this.score;
    }

    public static Team getTeam(String data) {    
        String score = "";    
        int i = data.length() - 1;    
        for (; Character.isDigit(data.charAt(i)); i--) {    
                score += data.charAt(i);    
        }    
        String name = data.substring(0, i);    
        return new Team(name, Integer.parseInt(new StringBuilder(score).reverse().toString()));
    }
}

例如輸入是這樣的

LION_@# 1234 OLD 5555 ,TEAM2345NAME NAME 123NAME 4444

名字是LION_@# 1234 OLD ,它的得分是5555
第二個名字是TEAM2345NAME NAME 123NAME4444是它的得分

注意:兩者都在其名稱中包含數字或特殊字符,甚至在分數部分中包含空格。

現在我只需要創建一個Team類的實例。
如下例所示:

    String all_data = "LION_@# 1234 OLD 5555     ,TEAM2345NAME   NAME 123NAME 4444";
    // spliting data by comma
    String parts[] = all_data.split(",");

    // calling getTeam method
    Team t1 = Team.getTeam(parts[0]);
    Team t2 = Team.getTeam(parts[1]);

然后使用它的字段,例如打印它們。

    System.out.println(t1.name);
    System.out.println(t2.score);

暫無
暫無

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

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