12

考虑下面的字符串

String names = "Bharath-Vinayak-Harish-Punith"

我想以仅包含Bharath的字符串形式获得输出。(字符串直到第一次出现“-”运算符)。任何人都可以告诉我,我们怎么能这样做?

4

5 回答 5

24

在一般情况下,我同意上split一个答案中的方法,但是,当只返回第一个字符串时,子字符串方法对程序员来说是相同的工作量(而且,对于非常大的字符串,计算工作量更少):

String result = names.substring(0, names.indexOf('-'))
于 2012-06-29T07:21:28.653 回答
8

如果您使用的是 Groovy 2.0(昨天发布),您可以执行以下操作:

String names = 'Bharath-Vinayak-Harish-Punith'
String result = names.takeWhile { it != '-' }
assert result == 'Bharath'
于 2012-06-29T07:41:28.933 回答
7

您可以使用拆分:

def theName = names.split(/-/)[0]

split 返回一个 String 数组,然后获取第一个数组元素。

于 2012-06-29T06:50:36.513 回答
1
def names= 'Bharath-Vinayak-Harish-Punith'   
assert "Bharath" == (names =~ /^(.*?)\-/)[0][1]
于 2012-06-29T10:05:16.567 回答
1

如果您有可用的Apache Commons Lang库(它是各种其他框架的一部分,例如 Grails):

 def result = StringUtils.substringBefore(names, '-')

最好的问候, 比约恩

于 2014-11-17T10:56:01.240 回答