gpt4 book ai didi

java - 如何解析管道分隔的 Attribute=Values 对?

转载 作者:行者123 更新时间:2023-11-29 05:22:54 24 4
gpt4 key购买 nike

我有字符串 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 最有效的方法吗?

最佳答案

拆分字符串使这更容易:

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();
}
}

输出:

Attribute=NameValue=Paul RobertsAttribute=TelephoneValue=Attribute=AddressValue=Attribute=CityValue=LA

关于java - 如何解析管道分隔的 Attribute=Values 对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23977538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com