从groovy中的字符串中提取数字数据
发布时间:2020-12-14 16:30:40 所属栏目:大数据 来源:网络整理
导读:我给了一个可以包含文本和数字数据的字符串: 例子: “100磅” “我觉得173磅” “73磅” 我正在寻找一种干净的方法来提取这些字符串中的数字数据. 这是我目前正在做的以剥离回应: def stripResponse(String response) { if(response) { def toRemove = ["
我给了一个可以包含文本和数字数据的字符串:
例子: “100磅” 我正在寻找一种干净的方法来提取这些字符串中的数字数据. 这是我目前正在做的以剥离回应: 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 ] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |