我给了一个可以包含文本和数字数据的字符串:
例子:
“100磅”
“我觉得173磅”
“73磅”
这是我目前正在做的以剥离回应:
def stripResponse(String response) { if(response) { def toRemove = ["lbs.","lbs","pounds.","pounds"," "] def toMod = response for(remove in toRemove) { toMod = toMod?.replaceAll(remove,"") } return toMod } }
解决方法
您可以使用findAll然后将结果转换为整数:
def extractInts( String input ) { input.findAll( /\d+/ )*.toInteger() } assert extractInts( "100 pounds is 23" ) == [ 100,23 ] assert extractInts( "I think 173 lbs" ) == [ 173 ] assert extractInts( "73 lbs." ) == [ 73 ] assert extractInts( "No numbers here" ) == [] assert extractInts( "23.5 only ints" ) == [ 23,5 ] assert extractInts( "positive only -13" ) == [ 13 ]
如果您需要小数和负数,则可能使用更复杂的正则表达式:
def extractInts( String input ) { input.findAll( /-?\d+\.\d*|-?\d*\.\d+|-?\d+/ )*.todouble() } assert extractInts( "100 pounds is 23" ) == [ 100,23 ] assert extractInts( "I think 173 lbs" ) == [ 173 ] assert extractInts( "73 lbs." ) == [ 73 ] assert extractInts( "No numbers here" ) == [] assert extractInts( "23.5 handles float" ) == [ 23.5 ] assert extractInts( "and negatives -13" ) == [ -13 ]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。