用定界符分割字符串


94

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


我很好奇为什么拆分不起作用?(a,b)=“ ab” .split(“-”)对我来说很好(我相信它也可以在Java中工作)。我用它所有的时间。编辑:只是看它们稍有不同-拆分返回一个数组,而标记化返回一个ArrayList。在Groovy中几乎是同一件事,该拆分具有易于移植到Java的优势,我不认为tokenize是String上的一种Java方法(除非它是一个相当新的方法,我错过了它)
Bill K

Answers:



61

你怎么打split?它是这样的:

def values = '1182-2'.split('-')
assert values[0] == '1182'
assert values[1] == '2'

10
我认为添加用'。'分割时可能遇到的边缘情况非常有用。字符 因此,如果要在文字点上String extensionRemoved = filename.split("\\.")[0]; 进行拆分,则必须转义该点: 否则,您将在regex。上拆分,这意味着“任何字符”。请注意在正则表达式中创建单个反斜杠所需的双反斜杠。
Exequiel Barrirero

感谢那。编写这种方法的目的是使尽可能多的人感到困惑。
达斯汀·奥普里亚

@ExequielBarrirero该评论今天挽救了我的生命
user3692823

22

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

有人可以在Groovy Console中尝试吗?

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

assert v == '1128'
assert z == '2'

1
如果您想拆分某种正则表达式字符,我对此有疑问。要么 *。您需要对其进行转义,令牌化在这种情况下也适用。
chandank

5

您也可以这样做:

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

//a=1182 b=2


0
dependencies {
   compile ('org.springframework.kafka:spring-kafka-test:2.2.7.RELEASE') { dep ->
     ['org.apache.kafka:kafka_2.11','org.apache.kafka:kafka-clients'].each { i ->
       def (g, m) = i.tokenize( ':' )
       dep.exclude group: g  , module: m
     }
   }
}

你好!尽管这段代码可以解决问题,但包括解释如何以及为何解决该问题的说明,确实可以帮助提高您的帖子质量,并可能导致更多的投票。请记住,您将来会为读者回答问题,而不仅仅是现在问的人。请编辑您的答案以添加说明,并指出适用的限制和假设。
布赖恩
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.