如何从java中的整个字符串中获取字符串变量。
如果给我一个以这种方式创建的字符串:
String s = "Name:" + name + "Age:" + age + "Sex:" + sex;
我怎样才能从这个String中获得名字,年龄,性别。
我不能使用getWord(位置)或类似的东西,因为我不知道名字中会有多少单词,以及代表年龄的方式 年龄=“22岁”或年龄=“22岁5个月”。
答案 0 :(得分:2)
我建议您将Name
,Age
和Sex
分割为","
字符。
这意味着:
String s = "Name:" + name + ",Age:" + age + ",Sex:" + sex;
然后你可以用“,”
分割字符串sString properties = s.split(",");
然后从属性变量中,您可以按":"
拆分以获取属性名称和该属性的值。
这是清楚的吗?
我正在添加更多代码以支持您想要的其他方式:
String name = "Thuan";
String age = "27";
String sex = "male";
String s = "Name:" + name + "Age:" + age + "Sex:" + sex;
int nameIndex = s.indexOf("Name:");
int ageIndex = s.indexOf("Age:");
int sexIndex = s.indexOf("Sex:");
String theName = s.substring(nameIndex + "Name:".length(), ageIndex);
String theAge = s.substring(ageIndex + "Age:".length(), sexIndex);
String theSex = s.substring(sexIndex + "Sex:".length(), s.length());
System.out.println(theName);
System.out.println(theAge);
System.out.println(theSex);
请注意,这只是示例显示逻辑,您需要自己重构。
答案 1 :(得分:1)
您将继续阅读该名称(在“NAME:”之后),直到您遇到四个后续字母“年龄:”然后继续阅读年龄,直到您遇到四个后续字母“SEX:”其余的是性别数据。
编辑:实际上“:”可能是你的分隔符,如果它没有包含在数据中。
答案 2 :(得分:0)
如果您有分隔字符,则可以使用String.split()方法。 例如,有
s = "Name: carmelo; Age: 25 years; Sex: m;"
然后你可以打电话
String[] values = s.split(";")
String name = values[0].split(":")[1];
String age = values[1].split(":")[1];
String sex = values[2].split(":")[1];
答案 3 :(得分:0)
利用“拆分”
String s = "Name:" + name + "#Age:" + age + "#Sex:" + sex;
String[] splits = s.split("#");
System.out.println("splits.size: " + splits.length);
for(int i=0; i < splits.length; i++){
//System.out.println(splits[i] );
String[] values= splits[i].split(":");
System.out.println(values[0]+" = " + values[1] );
}
答案 4 :(得分:0)
在创建的String上应该有适当的分隔符,否则将它们分割成字符串数组是不可能的。
例如:
private static final String FIELD_DELIMITER = ";";
private static final String DATA_DELIMITER = "=";
String s = "Name" + DATA_DELIMITER + name + FIELD_DELIMITER +
"Age" + DATA_DELIMITER + age + FIELD_DELIMITER +
"Sex" + DATA_DELIMITER + sex + FIELD_DELIMITER;
答案 5 :(得分:0)
我建议你使用正则表达式。您的示例代码是:
String s = "NAME : " + " abhi " + " Age : " + " 22 " + " Sex : " + " m ";
Pattern pattern = Pattern.compile("NAME[\\s]*:[\\s]*(.*)[\\s]*Age[\\s]*:[\\s]*(.*)[\\s]*Sex[\\s]*:[\\s]*(.*)");
Matcher matcher = pattern.matcher(s);
if (matcher.matches()) {
System.out.println("NAME : " + matcher.group(1) + " Age : " + matcher.group(2) + " Sex : "
+ matcher.group(3));
}
会为你工作。你可以为你做更改。
更新:即使它们在Name和。之间是空格也是可行的。在空格上很重要,不需要使用任何分隔符。
答案 6 :(得分:0)
您可以使用以下代码:
String s = "Name:" + name + "Age:" + age + "Sex:" + sex;
int i = s.indexOf("Age:");
int j = s.indexOf("Sex:");
String Name = s.substring(0,i).split(":")[1];
String Age = s.substring(i,j).split(":")[1];
String Sex = s.substring(j).split(":")[1];
System.out.println("Name="+Name+" Age="+Age+" Sex="+Sex);