Groovy GDK 相当于 Apache Commons StringUtils.capitalize(str) 或 Perl 的 ucfirst(str)
是/否问题:是否有 Groovy GDK 函数可以将字符串的第一个字符大写?
我正在寻找 Perl 的 ucfirst(..) 或 Apache Commons StringUtils.capitalize( str)(后者将输入字符串中所有单词的第一个字母大写)。
我目前正在使用 .. .. 手动编码,
str = str[0].toUpperCase() + str[1 .. str.size() - 1]
这可行,但我认为有一种更 Groovy 的方法可以做到这一点。 我想象 ucfirst(..) 是比 center(..) 更常见的操作,center(..) 是 Groovy GDK 中的标准方法(参见 http://groovy.codehaus.org/groovy-jdk/java/lang/String.html)。
Yes/no-question: Is there a Groovy GDK function to capitalize the first character of a string?
I'm looking for a Groovy equivalent of Perl's ucfirst(..) or Apache Commons StringUtils.capitalize(str) (the latter capitalizes the first letter of all words in the input string).
I'm currently coding this by hand using ..
str = str[0].toUpperCase() + str[1 .. str.size() - 1]
.. which works, but I assume there is a more Groovy way to do it. I'd imagine ucfirst(..) being a more common operation than say center(..) which is a standard method in the Groovy GDK (see http://groovy.codehaus.org/groovy-jdk/java/lang/String.html).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
不,没有任何东西直接内置于该语言中。
有一些更绝妙的方法可以完成您所要求的任务(如果您不想像 Vladimir 建议的那样以 Java 惯用方式使用 StringUtils)。
您可以在范围的后半部分使用负值来简化您的方法:
或者您可以使用 import static 使其看起来像本机方法:
您还可以修改元类以使其包含所有 StringUtils 方法,因此它看起来像一个 GDK 方法:
No, nothing built directly into the language.
There are a couple of more groovy ways to do what you're asking though (if you don't want to use StringUtils in the Java idiomatic way as Vladimir suggests).
You can simplify your method using a negative value in the second half of your range:
Or you can use an import static to make it look like a native method:
You can also modify the metaClass to have all of StringUtils methods right on it, so it looks like a GDK method:
我不知道有任何这样的方法,但解决方法是在您的 Groovy 代码中直接使用 Apache Commons 库:
它使您的 Groovy 代码有点 Java 风格(有些人可能不喜欢它),但它可以完成工作。
在我看来,Groovy 的巨大优势在于您可以非常轻松地利用通常与更传统的 Java 代码库一起使用的所有 Java 库。
I'm not aware of any such method, but a workaround is to directly use the Apache Commons library in your Groovy code:
It makes your Groovy code a bit Java-ish (some may not like it) but it does the job.
IMO the great advantage of Groovy is that you can very easily leverage all the Java libraries you normally use with a more traditional Java code base.
要使其在您的应用程序中全局可用,只需在启动时初始化此块
String.metaClass.capitalize = {
委托[0].toUpperCase()+委托[1..-1]
}
To make it available globally in your app ,just initialise this block at start up
String.metaClass.capitalize = {
delegate[0].toUpperCase()+delegate[1..-1]
}
如果您想更进一步并将每个单词大写,您可以使用如下内容:
If you wanted to take it a step further and capitalize each word, you can use something like this:
那么你可以尝试这个:
“嘿这是一个字符串”.split(' ').collect{it.capitalize()}.join(' ')
或者可能是这样的:
char c = ' '
“嘿,这是一个字符串”.collect{
c = c==' '?it.capitalize():it
}.join()
well you can try this:
"hey this is a string".split(' ').collect{it.capitalize()}.join(' ')
or may be this:
char c = ' '
"hey this is a string".collect{
c = c==' '?it.capitalize():it
}.join()
从 Groovy 1.8.2(早在 2011 年 9 月发布)开始,
capitalize()
是对String
实现的CharSequence
的内置增强。As of Groovy 1.8.2 (released way back in September 2011),
capitalize()
is a built-in enhancement toCharSequence
whichString
implements.