加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

从格式化字符串Java,Groovy中读取值

发布时间:2020-12-15 05:09:22 所属栏目:Java 来源:网络整理
导读:我想知道如何从Groovy甚至 Java中的格式化字符串中读取单个属性有什么好方法. 我有一个包含由空格分隔的属性的字符串.例如“2.1 20 Something true”.订单是固定的,“属性类型”是已知的(例如,首先是Float,第二个是Integer等).我需要类似String.format()的东
我想知道如何从Groovy甚至 Java中的格式化字符串中读取单个属性有什么好方法.

我有一个包含由空格分隔的属性的字符串.例如“2.1 20 Something true”.订单是固定的,“属性类型”是已知的(例如,首先是Float,第二个是Integer等).我需要类似String.format()的东西,但反过来.

我知道我可以手动拆分字符串并读取值,但这会使代码过于复杂,如下所示:

String[] parsedText = "2.1 20 Something true".split(delimiter)

try {
   firstVal = new Float(parsedText[0])
}
catch (NumberFormatException e) {
   throw new RuntimeException("Bad data [0th position in data string],cannot read[{$parsedData[0]}],cannot convert to float")
}
...

有没有更好的办法?我很确定至少在Groovy中是:-)

谢谢!

解决方法

Java Scanner类有一大堆方法用于抓取和解析字符串的下一部分,例如next(),nextInt(),nextDouble()等

代码如下所示:

String input = "2.1 20 Something true";
Scanner s = new Scanner(input);
float f = s.nextFloat();
int i = s.nextInt();
String str = s.next(); // next() doesn't parse,you automatically get a string
boolean b = s.nextBoolean();

唯一需要警惕的是:next()和nextLine()都可以获得字符串,但next()只能获取到下一个空格的字符串.如果您希望字符串组件中包含空格,则需要考虑到这一点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读