Java 将字符串解析为变量

Java 将字符串解析为变量,java,string,parsing,Java,String,Parsing,我试图将字符串解析为几个变量。字符串可以包含以下4个标记:“名称、大小、年龄、性别”,但它们并不都必须存在。可能字符串的示例 Example 1. "name:T-rex;" Example 2. "name:T-rex;size:8;" Example 3. "name:T-rex;age:4;gender:female" 我试着这样做: private String name; private String size; private String age; private String

我试图将字符串解析为几个变量。字符串可以包含以下4个标记:
“名称、大小、年龄、性别”
,但它们并不都必须存在。可能字符串的示例

Example 1. "name:T-rex;"
Example 2. "name:T-rex;size:8;"
Example 3. "name:T-rex;age:4;gender:female"
我试着这样做:

private String name;
private String size;
private String age;
private String gender;

private String parse(String data)
{
    String [] parts = data.split(";");

    name = parts[0];
    size = parts[1];
    age = parts[2];
    gender = parts[3];
}

但这仅在
字符串数据
包含所有4个标记时有效。我怎样才能解决这个问题?我真的需要这4个变量

最好的方法是将字符串解析为键/值对,然后调用按键设置它们的方法:

/**
* Set field based on key/value pair
*/
private void setValue(String key, String value) {
    switch(key) {
    case "name": {
        this.name = value;
        break;
    }
    case "age" : {
        this.age = value;
        break;
    }
    //...
    }
}
并以编程的方式称之为:

String[] k = "name:T-rex;age:4;gender:female".split(";");
for(String pair: k) {
    String[] a = pair.split(":");
    setValue(a[0], a[1]);
}

这使您可以灵活处理,甚至可以允许某些键丢失。

最好的方法是将字符串解析为键/值对,然后调用按键设置它们的方法:

/**
* Set field based on key/value pair
*/
private void setValue(String key, String value) {
    switch(key) {
    case "name": {
        this.name = value;
        break;
    }
    case "age" : {
        this.age = value;
        break;
    }
    //...
    }
}
并以编程的方式称之为:

String[] k = "name:T-rex;age:4;gender:female".split(";");
for(String pair: k) {
    String[] a = pair.split(":");
    setValue(a[0], a[1]);
}

这使您可以灵活使用,甚至允许丢失一些键。

使用hashmaps的魔力

首先,拆分属性:

String[] parts = inStr.split( ";" );
List<String> properties = Arrays.asList(parts);

使用hashmaps的魔力

首先,拆分属性:

String[] parts = inStr.split( ";" );
List<String> properties = Arrays.asList(parts);

对于
部分中的每个项目
,请在
上再次拆分:
。您保证它们不会混淆吗?@mitchelpulin订单不会更改,因此名称始终排在第一位。但是,不需要。您可能会得到一个
数据
,该数据缺少
大小
性别
。对于
部分
中的每个项目,请在
上再次拆分:
。您保证它们不会混淆吗?@MitchelPaulin订单不会更改,因此名称始终是第一位的。但是,不需要。您可能会得到一个
数据
,它缺少
大小
性别
.split(“:”),而不是“=”@ernest\u k谢谢!拆分(“:”)而不是“=”@ernest_k谢谢!