Grails:在GSP视图中拆分字符串

时间:2015-03-05 20:56:36

标签: grails groovy

我知道如何在Controller或Domain类中拆分字符串。

但我想将字符串拆分为GSP。

我的字符串将如下所示:

ASD25785-T

我希望能够在GSP视图中将其拆分为2个字符串。

String a = ASD25785
String b = T

是否有可能在GSP内部做到这一点?

2 个答案:

答案 0 :(得分:0)

这样的事情怎么样:

<%
   String[] tokens = "ASD25785-T".split("-")
   String b = tokens[0]
   String c = tokens[1]
%>

<强> NB 即可。使用try catch,因为你可能会得到ArrayOutofBoundException

答案 1 :(得分:0)

这取决于您是否具有预定义格式,或者您需要通用格式。

没有try / catch并在String中使用regex find方法:

<%
String s="ASD25785-T"
String a,b 
s.find(/(.+)-(.+)/) { fullMatch, first, second -> [
    a=first
    b=second
}
%>

如果您确定总会有匹配,那么这是一个可爱的单行:

<%
String s="ASD25785-T"
def (a,b) = s.find(/(.+)-(.+)/) { fullMatch, first, second -> [first,second]}
%>

来源: http://naleid.com/blog/2009/04/07/groovy-161-released-with-new-find-and-findall-regexp-methods-on-string

注意:但是,如果要在视图中使用它,则应创建标记。 Grails taglibs几乎可以轻松编写,并且更好地用于GSP代码。

http://grails.github.io/grails-doc/2.4.x/ref/Command%20Line/create-tag-lib.html

http://grails.github.io/grails-doc/latest/guide/single.html#taglibs

这是一个字符串操作taglib

class StringsTaglib {
   def split = { attrs, body ->
       String input= attrs.input
       String regex= attrs.regex
       int position= attrs.index as Integer

       out << input.split(regex)[position]
    }
}
然后你可以像这样使用它:

a:<g:split input="ASD25785-T" regex="-" index="0"/>
b:<g:split input="ASD25785-T" regex="-" index="1"/>