簡體   English   中英

根據定界符和字符串進行分割

[英]Splitting based on delimiter and string

String CompanyData = "{ChargeCompany1Cnt:0,ChargeCompany2Cnt:73,ChargeCompany3Cnt:44,BalanceCompany3Cnt:0,ChargeCompany4Flag:green,BalanceCompany2Flag:green,BalanceCompany1Cnt:0,ChargeCompany3Flag:red,ChargeCompany1Flag:green,BalanceCompany4Flag:green,BalanceCompany1Flag:green,BalanceCompany2Cnt:0,BalanceCompany4Cnt:0,BalanceCompany3Flag:green,ChargeCompany2Flag:red,ChargeCompany4Cnt:6}";

CompanyData是我的字符串,我正在分割數據,如下所示。 這段代碼沒有問題,但是如果更改順序,則字符串拆分會中斷。 如何拆分此字符串並通過其名稱分配給另一個字符串(如基於ChargeCompany1Cnt,ChargeCompany2Cnt的拆分)。 我在UNIX中使用過cutsed命令來執行此操作,現在將我的Shell腳本轉換為JAVA。 非常抱歉,這是一個基本問題

String ChargeCompany1Cnt=CompanyData.split(,)[0].replace("{","");
String ChargeCompany2Cnt=CompanyData.split(,)[1];
String ChargeCompany3Cnt=CompanyData.split(,)[2];
String BalanceCompany3Cnt=CompanyData.split(,)[3];
String ChargeCompany1Flag=CompanyData.split(,)[8];

基本上我需要在CompanyData中找到諸如ChargeCompany2Cnt,ChargeCompany1Flag之類的字符串並打印ChargeCompany2Cnt:73 ChargeCompany1Flag:green

請注意,如果這是JSON對象,則可以使用Jacson的ObjectMapper輕松解析它。 您可以使用以下代碼進行手動解析

    String CompanyData = "{ChargeCompany1Cnt:0,ChargeCompany2Cnt:73,ChargeCompany3Cnt:44,BalanceCompany3Cnt:0,ChargeCompany4Flag:green,BalanceCompany2Flag:green,BalanceCompany1Cnt:0,ChargeCompany3Flag:red,ChargeCompany1Flag:green,BalanceCompany4Flag:green,BalanceCompany1Flag:green,BalanceCompany2Cnt:0,BalanceCompany4Cnt:0,BalanceCompany3Flag:green,ChargeCompany2Flag:red,ChargeCompany4Cnt:6}";
    HashMap<String,String> mymap = new HashMap<String,String>();
    for ( String s: CompanyData.split("[?,{}]")) {
        if (!s.equals(""))
        mymap.put(s.split(":")[0],s.split(":")[1]); }

        for (HashMap.Entry<String, String> entry : mymap.entrySet()) {
    String key = entry.getKey().toString();;
    String value = entry.getValue();
    System.out.println( key + " =  " + value );

您的問題不太清楚,但是也許此代碼段會為您指明正確的方向:

List<String> companyCount = new ArrayList<>();
String[] companies = CompanyData.substring(1, -1).split(",");
for (String companyCnt : companies) {
    companyCount.add(companyCnt);
}

順便說一句,您也可以不使用cut(1)來執行整個操作。

根據您打算如何使用變量,您可以替代地創建一組鍵值對,而不是顯式聲明每個變量。 然后,您可以拆分名稱(即,在:上拆分每個元素)並將其用作鍵,而無需知道哪個是哪個。

暫無
暫無

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

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