考慮下面的字符串要獲得在Groovy字符串分隔一個字符
String names = "Bharath-Vinayak-Harish-Punith"
我想在字符串的形式,它僅包含巴拉斯得到輸出。 (直到第一次出現「 - 」運算符的字符串)。任何人都可以告訴我,我們怎麼做到這一點?
考慮下面的字符串要獲得在Groovy字符串分隔一個字符
String names = "Bharath-Vinayak-Harish-Punith"
我想在字符串的形式,它僅包含巴拉斯得到輸出。 (直到第一次出現「 - 」運算符的字符串)。任何人都可以告訴我,我們怎麼做到這一點?
在一般情況下,我同意上一個答案中的split
方法,但是當僅返回第一個字符串時,子字符串方法與程序員的工作量相同(並且對於非常大的字符串,計算工作):
String result = names.substring(0, names.indexOf('-'))
好吧,它正在工作。但是出現了很多「 - 」。爲什麼它只取第一個索引。 –
@BharathAN [indexOf返回首次出現](http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#indexOf%28java.lang.String%29) –
你可以使用分裂:
def theName = names.split(/-/)[0]
分裂返回一個字符串數組,然後拿到第一個數組元素。
kelly除split()或tokanize()以外的其他任何方法 –
那麼,您可以使用indexOf來查找第一個「 - 」的位置,然後使用substring從字符串的開頭到短劃線之前的字符。但是,爲什麼你想要這樣做,而不是使用專爲此設計的內置函數呢? – Kelly
split方法返回字符串數組。但我不需要所有的值,我只需要第一部分。我想簡單地說它使用拆分方法消耗更多的內存。 –
如果你使用Groovy 2.0(昨日發佈的),你可以這樣做:
String names = 'Bharath-Vinayak-Harish-Punith'
String result = names.takeWhile { it != '-' }
assert result == 'Bharath'
這是不工作groovy控制檯tim_yates .. –
@BharathAN你使用的是Groovy 2.0嗎?你的意思是Web控制檯? Web控制檯正在運行1.8.4 ... –
def names= 'Bharath-Vinayak-Harish-Punith'
assert "Bharath" == (names =~ /^(.*?)\-/)[0][1]
的情況下,你有Apache Commons Lang庫可用(它是各種其他框架的一部分,例如Grails的):
def result = StringUtils.substringBefore(names, '-')
最好的問候, 比約恩
順便說一句,這是功課某種? – River
編號其實我在爲我的項目編碼時發現了同樣的情況。 –