class myObject {
list of myObject 'Parents'
list of myObjectData 'Children'
}
class myObjectData {
myObject 'Child'
integer 'someMetaData'
}
CompanyData是我的字符串我正在分割如下数据。这段代码没有问题,但如果在字符串中更改了顺序,则拆分就会中断。
如何拆分此字符串并按名称分配给另一个字符串(如基于ChargeCompany1Cnt,ChargeCompany2Cnt拆分)。我在UNIX中使用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}";
和cut
命令来执行此操作,现在将我的Shell脚本转换为JAVA。很抱歉,如果这是一个基本问题
sed
基本上我需要在CompanyData中找到像ChargeCompany2Cnt,ChargeCompany1Flag这样的字符串并打印ChargeCompany2Cnt:73 ChargeCompany1Flag:green
答案 0 :(得分:1)
请注意,如果这是JSON对象,您可以使用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 );
答案 1 :(得分:0)
您的问题并不太清楚,但也许这段代码会指出您正确的方向:
List<String> companyCount = new ArrayList<>();
String[] companies = CompanyData.substring(1, -1).split(",");
for (String companyCnt : companies) {
companyCount.add(companyCnt);
}
顺便说一句,您可以在不使用cut(1)的情况下执行整个操作。
答案 2 :(得分:0)
根据您打算如何使用变量,您可以创建一组键值对,而不是显式声明每个变量。
然后你可以将名称拆分出来(即在#singleton_class
上进一步拆分每个元素)并将它们用作键而不需要知道哪个是哪个。