1

b="Name=Paul Roberts|Telephone=|Address=|City=LA"; 我有一整天都在尝试获取没有等号和管道符号的输出属性值对的字符串。我有超过 4 个结果,但这是我想要实现的:输出(将每一对分开,因为我必须将这两个值放入某个表的字段中):

Name
Paul Roberts 

Telephone

Address

City
LA

所以你可以注意到 VALUE 可以为 null(空)。

我尝试使用 SUBSTRING (也许有更好的方法)但得到错误的结果:

static String b="Name=Paul Roberts|Telephone=|Address=|City=LA";   

public static void main(String[] args) {

    System.out.println("b="+b);
    String match = "=";

    int i =0;
    while((i=(b.indexOf(match,i)+1))>0)
    { 
    String c=b.substring(0,i-1);
    String d=b.substring(i);
    String match2="|";
    int k=b.indexOf(match2);
    System.out.println("Attribute="+c);

    int j=d.indexOf(match2);
    if (j>-1)
    {
   String e=d.substring(0,j);
   System.out.println("Value="+e);
    }
    if (k>-1)
    {
    b=b.substring(k+1,b.length());
    }
    }
}

我接近正确的结果,但这就是我得到的:

b=Name=Paul Roberts|Telephone=|Address=|City=LA
Attribute=Name
Value=Paul Roberts
Attribute=Telephone
Value=
Attribute=Address=|City

所以你可以注意到最后一行是不正确的,我错过了两行。这也是 SUBSTRING 最有效的方式吗?

4

2 回答 2

3

拆分字符串使这更容易:

public static void main(String[] args) {
  String b="Name=Paul Roberts|Telephone=|Address=|City=LA";

  for (String s : b.split("\\|")) {
    String[] pair = s.split("=");

    String attribute = pair[0];
    String value = ((pair.length > 1) ? pair[1] : "");

    System.out.println("Attribute=" + attribute);
    System.out.println("Value=" + value);
    System.out.println();
  }
}

输出:

属性=名称
价值=保罗·罗伯茨

属性=电话
价值=

属性=地址
价值=

属性=城市
价值=LA
于 2014-06-01T07:16:47.677 回答
0

非常基本的方法是

    String b="Name=Paul Roberts|Telephone=|Address=|City=LA"; 
    b = b.replace("\"", "");
    b = b.replace("|", "\n");
    b = b.replace("=", "\n");
    System.out.println(b);

输出是

Name
Paul Roberts
Telephone

Address

City
LA

StringBuffer同样,如果您使用它而不是直接在字符串上操作会更好。

于 2014-06-01T07:14:30.280 回答