[英]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中使用过cut
和sed
命令来执行此操作,现在将我的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.