[英]divide the string with RegExp in Groovy
好吧,我在xml-response中放置了很多符号,像这样:
def xmlString = "<TAG1>1239071ABCDEFGH</TAG1><TAG2>1239071ABCDEFGH</TAG2>"
使用xmlSlurper仅保留数字
def node =
new XmlSlurper().parseText(xmlString)
def nodelist = [node.tag1.tag2]
在此“节点”获得类似“ 1239071123907112390711231239071”的值后,我尝试将Java RegExp放入7分隔数字
System.out.println(java.util.Arrays.toString( nodelist.node.split("(?<=\G.{7})") ))
我哪里做错了? 它不起作用
假设您有一些有效的xml,例如:
def xmlString = """<document>
| <TAG1>1239071ABCDEFGH</TAG1>
| <TAG2>1239071ABCDEFGH</TAG2>
|</document>""".stripMargin()
然后,您可以获取所有以TAG
开头的元素,并针对每个元素修剪掉不是数字的结束字符:
def nodeList = new XmlSlurper().parseText( xmlString )
.'**'
.findAll { node ->
node.name().startsWith( 'TAG' )
}
.collect { node ->
it.text().takeWhile { ch ->
Character.isDigit( ch )
}
}
在此示例中, nodeList
将等于:
assert nodeList == ['1239071', '1239071']
如果您想使这些数字与包含它们的TAG
相关联(假设TAGn
标签是唯一的),则可以更改为collectEntries
def nodeList = new XmlSlurper().parseText( xmlString )
.'**'
.findAll { node ->
node.name().startsWith( 'TAG' )
}
.collectEntries { node ->
[ node.name(), node.text().takeWhile { Character.isDigit( it ) } ]
}
assert nodeList == [TAG1:'1239071', TAG2:'1239071']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.