使用分隔符拆分字符串

the*_*e64 81 string groovy split

我目前正在尝试拆分一个字符串,1128-2以便我可以有两个单独的值.例如,value1:1128和value2:2,这样我就可以分别使用每个值.我试过split()但没有成功.Grails是否有特定的处理方式,或者更好的方法呢?

tim*_*tes 152

尝试:

def (value1, value2) = '1128-2'.tokenize( '-' )
Run Code Online (Sandbox Code Playgroud)

  • 这是对"split"vs"tokenize"的好读.http://www.tothenew.com/blog/groovy-tokenize-vs-split/ (28认同)
  • 哦,如果你像管道一样拆分某些字符,请小心.你将需要逃脱这个问题http://stackoverflow.com/questions/3842537/grails-splitting-a-string-that-c​​ontains-a-pipe (4认同)
  • 是的,cos split使用正则表达式 (2认同)

ata*_*lor 58

split好吗?它的工作原理如下:

def values = '1182-2'.split('-')
assert values[0] == '1182'
assert values[1] == '2'
Run Code Online (Sandbox Code Playgroud)

  • 我认为添加一个边缘情况是非常有用的,当你用"."进行分割时可能会遇到这种情况.焦炭.因此,如果要在文字点上拆分,你必须要转义点:`String extensionRemoved = filename.split("\\.")[0];`否则你正在拆分正则表达式.这意味着"任何角色".注意在正则表达式中创建单个反斜杠所需的双反斜杠. (6认同)

dma*_*tro 21

def (value1, value2) = '1128-2'.split('-') 应该管用.

任何人都可以在Groovy控制台中尝试这个吗?

def (v, z) =  '1128-2'.split('-')

assert v == '1128'
assert z == '2'
Run Code Online (Sandbox Code Playgroud)

  • 如果你想分割某种类型的正则表达式字符,例如 . 或者 *。您需要转义它,标记化在这些情况下也适用。 (2认同)

小智 8

你也可以这样做:

Integer a = '1182-2'.split('-')[0] as Integer
Integer b = '1182-2'.split('-')[1] as Integer

//a=1182 b=2
Run Code Online (Sandbox Code Playgroud)