Java 如何获取包含在单个字符串中的变量名及其值?

Java 如何获取包含在单个字符串中的变量名及其值?,java,android,string,split,Java,Android,String,Split,如果单个字符串中包含信息,如何获取字符串变量名并为其赋值 我有这样一个字符串: "id: 123487, street1: Stanton, street2: Gateway, street3: Hawkins, city: Horizon" 我试图达到的结果是: id=“123487” street1=“斯坦顿” street2=“网关” street3=“霍金斯” 城市=“地平线” 到目前为止,我掌握的是以下代码: String scannedData = "id: 123487, str

如果单个字符串中包含信息,如何获取字符串变量名并为其赋值

我有这样一个字符串:

"id: 123487, street1: Stanton, street2: Gateway, street3: Hawkins, city: Horizon"
我试图达到的结果是:
id=“123487”
street1=“斯坦顿”
street2=“网关”
street3=“霍金斯”
城市=“地平线”

到目前为止,我掌握的是以下代码:

String scannedData = "id: 123487, street1: Stanton, street2: Gateway, street3: Hawkins, city: Horizon"


String[] data = scannedData.split(",");
for (String result1 : data) {
    Toast.makeText(scanQrActivity.this,
            result1, Toast.LENGTH_LONG).show();
}
因此,我能够向使用Toast的用户显示由逗号分隔的字符串,我有这样一个:
“id:123487”
“街道1:斯坦顿”
“街道2:网关”
“街3:霍金斯”
“城市:地平线”

也许我可以先创建5个变量,然后以某种方式只获取值,因此在for循环中,我可以将每个值分配给每个变量?
但我不知道如何,你能帮我实现我的目标吗?
谢谢


我创建了一个
Location
类,它将保存我们要分析的数据

public class Location {

    private int id;

    private String street1, street2, street3, city;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getStreet1() {
        return street1;
    }

    public void setStreet1(String street1) {
        this.street1 = street1;
    }

    public String getStreet2() {
        return street2;
    }

    public void setStreet2(String street2) {
        this.street2 = street2;
    }

    public String getStreet3() {
        return street3;
    }

    public void setStreet3(String street3) {
        this.street3 = street3;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }
}
现在,我们可以使用以下方法将输入字符串解析为
位置
对象

public static Location parseLocation(String input) {
    // Get the input and split it into an array of "key: value" strings.
    String[] splitInput = input.split(", ");

    // Create an array to hold the actual key-values.
    String[][] keyValues = new String[splitInput.length][2];

    // Split each "key: value" string into its consisting parts.
    for (int i = 0; i < splitInput.length; i++) {
        keyValues[i] = splitInput[i].split(": ");
    }

    // Create a Location object to populate.
    Location location = new Location();

    // Find the keys & values from the input that you're looking for.
    for (String[] keyValue : keyValues) {

        // Switch on the key.
        switch (keyValue[0]) {
            case "id":
                location.setId(Integer.valueOf(keyValue[1]));
                break;

            case "street1":
                location.setStreet1(keyValue[1]);
                break;

            case "street2":
                location.setStreet2(keyValue[1]);
                break;

            case "street3":
                location.setStreet3(keyValue[1]);
                break;

            case "city":
                location.setCity(keyValue[1]);
                break;
        }
    }
    return location;
}

谢谢你们的帮助,你们给了我很棒的建议,最后,我用了一种更简单的方式,它可能不是最好的编码,但我仍在学习,我认为我的目标是像你们一样编码,所以你们的答案真的帮助我认识到我还有很多东西要学

    String scannedData = "id: 123487, street1: Stanton, street2: Gateway, street3: Hawkins, city: Horizon"

    String[] data = scannedData .split(",");
    String id = null;
    String street1 = null;
    String street2 = null;
    String street3 = null;
    String city = null;
    for (String result : data) {

        id = data[0].replace("id: ", "");
        street1 = data[1].replace("street1: ", "");
        street2 = data[2].replace("street2: ", "");
        street3 = data[3].replace("street3: ", "");
        city = data[4].replace("city: ", "");
    }

然后我用Toast展示了每个变量。

你问的问题不是特别清楚,但是你可以进一步将“str:Fnord”字符串拆分为两个字符串的数组。好的,我明白了,我正在尝试创建字符串变量并给它们赋值,例如,如果我有这个字符串:“city:Horizon,street1:Stanton”我想要一个名为city的字符串变量,其值等于“Horizon”,并对street1执行相同的操作,以此类推。所以如果我理解你的建议,我会再次分手。但这一次被“:”分开了?
public static void main(String[] args) {
    String   input    = "id: 123487, street1: Stanton, street2: Gateway, street3: Hawkins, city: Horizon";
    Location location = parseLocation(input);

    System.out.println(String.format("id: %d\n"
            + "street1: %s\n"
            + "street2: %s\n"
            + "street3: %s\n"
            + "city: %s", location.getId(), 
            location.getStreet1(), location.getStreet2(), 
            location.getStreet3(), location.getCity()));
}
    String scannedData = "id: 123487, street1: Stanton, street2: Gateway, street3: Hawkins, city: Horizon"

    String[] data = scannedData .split(",");
    String id = null;
    String street1 = null;
    String street2 = null;
    String street3 = null;
    String city = null;
    for (String result : data) {

        id = data[0].replace("id: ", "");
        street1 = data[1].replace("street1: ", "");
        street2 = data[2].replace("street2: ", "");
        street3 = data[3].replace("street3: ", "");
        city = data[4].replace("city: ", "");
    }