在java中从String获取子字符串

时间:2016-08-27 18:51:37

标签: java string

我有一个包含不同值的数据的字符串,例如

String values = "firstname=john&lastname=fob&email=something@something.com&Telephone=3874813781"

仅供参考:&是分隔符。

我想为所有这些参数创建一个新字符串 - firstname,lastname,email等... - 我希望字符串只包含特定参数的值,如

String firstname = "john";

lastname相同,依此类推。我认为使用

并不是更好
String firstname = values.indexOf(10);

因为我不知道用户名包含多少个字符所以我可以使用姓氏,我想知道是否有更好的方法来获取每个参数的值并分配它是一个新的字符串。

4 个答案:

答案 0 :(得分:1)

您可以使用拆分方法。 使用values.split("&"),这将返回一个字符串数组。

String values = "firstname=john&lastname=fob&email=something@something.com&Telephone=3874813781";
String[] parameters = values.split("&");
System.out.println(parameters[0]); // Prints firstname=john

答案 1 :(得分:1)

使用String values_seperated[] = values.split("&");这将为您提供array of Strings

所以这里elements of values_seperated[] array将是:

values_seperated[0]:firstname=john
values_seperated[1]:lastname=fob
values_seperated[2]:email=something@something.com
values_seperated[3]:Telephone=3874813781

答案 2 :(得分:1)

String[] split = values.split("&");

String firstname = null, lastname = null, email = null, Telephone = null;

for (String string : split) {
    String[] parts = string.split("=");
    String key = parts[0];
    String value = parts[1];

    switch (key) {
    case "firstname":
        firstname = value;
        break;
    case "lastname":
        lastname = value;
        break;
    case "email":
        email = value;
        break;
    case "Telephone":
        Telephone = value;
        break;
    }
}

答案 3 :(得分:0)

java中有一个函数可以根据你想要的分隔符分隔java标记。以下解决方案假定将使用值字符串中的相同参数序列:

    String values =  "firstname=john&lastname=fob&email=something@something.com&Telephone=3874813781";

    StringTokenizer st = new StringTokenizer(values,"&");
    String nextToken; 

    nextToken=st.nextToken();
    String firstname=nextToken.substring(nextToken.indexOf("=")+1);

    nextToken=st.nextToken();
    String lastname=nextToken.substring(nextToken.indexOf("=")+1);

    nextToken=st.nextToken();
    String email=nextToken.substring(nextToken.indexOf("=")+1);

    nextToken=st.nextToken();
    String Telephone=nextToken.substring(nextToken.indexOf("=")+1);

    System.out.println(firstname+" "+lastname+" "+email+" "+Telephone); 

StringTokenizer(values,"&")将String拆分为多个令牌 然后逐个将值分配给相应的变量。

st.nextToken()逐个获取令牌