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

したがって、最後の行が正しくなく、2 つの行が欠落していることがわかります。また、これは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();
  }
}

出力:

属性=名前
値=ポール・ロバーツ

属性=電話
値=

属性=アドレス
値=

属性=都市
値=ラ
于 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 に答える