gpt4 book ai didi

java - 优雅地等同于 Java 中 C 的 vsscanf()

转载 作者:行者123 更新时间:2023-11-29 05:50:19 25 4
gpt4 key购买 nike

我需要一个相当于 Java 中 C 的 vsscanf() 的函数。更详细,我这里有这个:

private void parseString(String parseMe, String format, Object[] args) {
// something like: vsscanf(parseMe, format, args);
}

请注意,我确实阅读了 about an equivalent for sscanf() ,因此可以从那里轻松完成。但我问自己是否有比用 for 循环填充 args 更优雅的解决方案。

此外,如果解决方案也允许使用可变参数而不是数组,那就太好了。见下文。

parseString(str, format, x, y, z);

最佳答案

您可以使用 java.text.MessageFormat。例如:

public static void main(String[] args) throws ParseException {
String input="hello 1:2.3.4";
MessageFormat form = new MessageFormat("{0} {1,number}:{2,number,integer}.{3,number}");
Object[] data = form.parse(input);
for(Object o : data) {
System.out.println(o.getClass()+" : "+o.toString());
}
}

产生输出:

class java.lang.String : hello
class java.lang.Long : 1
class java.lang.Long : 2
class java.lang.Double : 3.4

当然,该格式不像 scanf 使用的那样紧凑,但它是开箱即用的 Java。

关于java - 优雅地等同于 Java 中 C 的 vsscanf(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14148976/

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