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