2014-11-06 45 views
-1

我的问题是关于groovy中matcher类中的属性count。以下是一个示例:Groovy中Matcher类中的Count属性

import java.util.regex.Matcher 
def p= /[a-z]*/ 
Matcher m= "abc" =~ p 

println m.count 

如您所见,Groovy实际上使用Java中的Matcher类。根据javadoc,Matcher没有任何计数属性。我们必须在Java开发中使用循环进行手动计数以进行模式匹配。 groovy如何做到这一点?它是否记录在某处?

感谢,

+3

Groovy JDK javadoc中的'Matcher'类包含'count':http://groovy.codehaus.org/groovy-jdk/java/util/regex/Matcher.html – sherb 2014-11-06 05:31:36

+0

嗨,根据回答,那里是java jdk和groovy jdk之间的区别。在groovy jdk中,更多的功能已经实现。因此,这是正确的解决方案。你能解释为什么我拒绝投票支持这个问题吗?谢谢, – TrongBang 2014-11-07 03:25:27

+0

我没有把你的问题投下来;我假设其他人可能认为这对于SO来说“太小”了。我对groovy一无所知,花了大约三分钟的时间才找到谷歌的答案。 – sherb 2014-11-07 03:29:34

回答

0

一个良好的开端,这是Groovy Backstage,尤其是Groovy Method Invocation。基本上这些类通过一套通用的工具得到了一个metaClass(例如DefaultGroovyMethods(见下文)Object)。在方法调用时,groovy将这个考虑在“有什么”中。 count对于Matcher已经是一些更特殊的情况,在Object上更常用的是例如println

如果您只对功能本身感兴趣,您可以检查GDK。例如。为Matcher.getCount()

如果你有兴趣如何实际执行,那么一个好的开始总是DefaultGroovyMethodsDefaultGroovyMethodsSupport的后代。因此在Matcher.getCount()利兹之后为https://github.com/groovy/groovy-core/blob/master/src/main/org/codehaus/groovy/runtime/StringGroovyMethods.java#L1508