gpt4 book ai didi

java - 从 String.format() 生成的字符串中提取值

转载 作者:行者123 更新时间:2023-12-01 19:01:28 26 4
gpt4 key购买 nike

有没有办法从 String.format() 字符串中提取值。例如我创建了一个如下所示的字符串。

String str = String.format("a number %d, a name %s", 3, "sam");
System.out.println(str); // output : a number 3, a name sam

现在给出一个类似的字符串。

String str1 = "a number 45, a name joseph"
Object[] objects = // String.extract("a number %d, a name %s", str1); //something like this
expected output : [45, "joseph"]

最佳答案

您添加到字符串中的值现在是字符串的一部分,因此无法“反转”它。

否则,如果您知道给定的字符串将遵循某种模式,例如

"a number " + digits here + ", a name " + a word here

我建议您使用regex :

这个表达式:

 /number ([0-9]*)/

将返回第 1 组的数字。

还有这个:

/, a name (\w*)/

将再次返回名称作为组 1。

您可以将两个正则表达式合并到一个表达式中,例如:

/a number ([0-9]*), a name (\w*)/

这将返回组 1 中的号码和组 2 中的名称。

所以这段代码应该可以解决问题:

 Matcher m = p.matcher("a number ([0-9]*), a name (\w*)");

if (m.find()) {
System.out.println(m.group(0)); // number
System.out.println(m.group(1)); // name
}

此外,如果您想实现拥有姓氏的可能性,您应该正确更改 \w

如果您需要在数组上使用它们,请参阅 this post .

关于java - 从 String.format() 生成的字符串中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59631734/

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