1

如何从java中的整个字符串中获取字符串变量。

如果给我一个以这​​种方式创建的字符串:

String s = "Name:" + name + "Age:" + age + "Sex:" + sex;

我如何从这个 String s 中获取姓名、年龄、性别。

我不能使用 getWord(position) 或类似的东西,因为我不知道名字中有多少个单词,以及年龄如何表示 age =“22 岁”或 age =“22 岁 5 个月”。

4

7 回答 7

2

我建议你有Name,Age并按字符Sex分割。","

它的意思是:

String s = "Name:" + name + ",Age:" + age + ",Sex:" + sex;

然后你可以用“,”分割字符串s

String 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);

请注意,这只是向您展示逻辑的示例,您需要自己重构。

于 2012-05-09T07:59:44.023 回答
1

您将继续阅读姓名(当然在“NAME:”之后),直到遇到四个后续字母“AGE:”,然后继续阅读年龄,直到遇到四个后续字母“SEX:”,其余的是性别数据。

编辑:实际上“:”可能是您的分隔符,如果它不包含在数据中。

于 2012-05-09T07:58:06.120 回答
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 和 .Doesnt 之间是否存在空格,这也将起作用,并且不需要使用任何分隔符。

于 2012-05-09T08:12:10.997 回答
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);
于 2012-05-09T08:16:29.857 回答
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;
于 2012-05-09T08:03:54.817 回答
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];
于 2012-05-09T07:58:34.097 回答
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] );
}
于 2012-05-09T07:59:49.317 回答