gpt4 book ai didi

java - 使用扫描仪打印标记和分隔符值

转载 作者:太空宇宙 更新时间:2023-11-04 07:50:11 24 4
gpt4 key购买 nike

我有一个像这样的字符串 -

"fruit=apple man=human abc=123"

我希望像 - 一样打印值

fruit=
apple
man=
human
abc=
123

即我还想查看分隔符值。目前我正在尝试-

String status2="fruit=apple man=human abc=123";
Scanner scn = new Scanner(status2).useDelimiter("[a-z]*=+");
while(scn.hasNext())
{
System.out.println(scn.next());
System.out.println(scn.delimiter());
}

但我看不到分隔符值

apple 
[a-z]*=+
human
[a-z]*=+
123
[a-z]*=+

更新字符串 -

"cobdate=01/28/2013 fundsnotextracted= elapsedtime=00:06:02 user=dataprod starttime=Wed, 30 Jan 2013 11:50:30 periods=DAILY, MTD, YTD knowledgedate=01/30/2013:11:50:10 progress=67 statusstep=Generating Reports ....."

预期输出 -

cobdate=01/28/2013 
fundsnotextracted=
elapsedtime=00:06:02
user=dataprod
starttime=Wed, 30 Jan 2013 11:50:30
periods=DAILY, MTD, YTD
knowledgedate=01/30/2013:11:50:10
progress=67
statusstep=Generating Reports .....

最佳答案

您的分隔符不正确。您应该在每个 = 之后设置分隔符标志,并且也在每个 whitespace 。您可以直接使用它:-

Scanner scn = new Scanner(status2).useDelimiter("(?<==)|[ ]");

这里的分隔符是: - 每个 = 之后的空字符串表示为(?<==)[ ] 表示的空格.

<小时/>

但是,考虑到您的输入字符串和所需的输出,我宁愿 split字符串,具有相同的 pattern正如我在delimiter中使用的那样,这将为您提供一个数组,您也可以稍后在其他地方使用它:-

String status2="fruit=apple man=human abc=123";
String[] arr = status2.split("(?<==)|[ ]");
System.out.println(Arrays.toString(arr));
<小时/>

更新:-

对于更新的输入,您需要做更多的工作。首先,你严格需要一个 split这里。另外,您必须进行两次拆分 - 一次在空白上,另一次在 = 上。 .

现在,空格后面必须跟以 = 结尾的字母序列,这样您就不会错误地分割值中包含的空格。因此,您的代码应如下所示:-

String str = "cobdate=01/28/2013 fundsnotextracted= elapsedtime=00:06:02 user=dataprod starttime=Wed, 30 Jan 2013 11:50:30 periods=DAILY, MTD, YTD knowledgedate=01/30/2013:11:50:10 progress=67 statusstep=Generating Reports .....";

// Split on a whitespace, followed by a sequence of letters ending with =.
// This ensures that you don't split on whitespace, optionally present in some values
String[] arr = str.split("[ ](?=[a-zA-Z]+=)");

for (String eachString : arr) {
// Split on empty string following the = sign
String[] tempArr = eachString.split("(?<==)");

System.out.print(tempArr[0] + " ");

// To ensure that you don't print a non-existence value.
if (tempArr.length == 2) {
System.out.println(tempArr[1]);
} else {
System.out.println();
}
}

输出:-

cobdate= 01/28/2013
fundsnotextracted=
elapsedtime= 00:06:02
user= dataprod
starttime= Wed, 30 Jan 2013 11:50:30
periods= DAILY, MTD, YTD
knowledgedate= 01/30/2013:11:50:10
progress= 67
statusstep= Generating Reports ....

关于java - 使用扫描仪打印标记和分隔符值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14614180/

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