用Groovy思考 第五章 Groovy特性深入(2)

简介: 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/8841661 用Groovy思考 第五章 Groovy特性深入(2)作者:chszs,转载需注明。
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/8841661

用Groovy思考 第五章 Groovy特性深入(2)

作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs

6. 斜线字符串

正如早先提到的,斜线可以用于定义字符串。用斜线定义字符串有一个优点:那就是,字符串本身的内容无需转义反斜线。

比如:
def winpathQuoted = 'C:\\windows\\system32'
def winpathSlashy = /C:\windows\system32/
println winpathSlashy // C:\windows\system32
assert winpathSlashy ==~ '\\w{1}:\\\\.+\\\\.+'
assert winpathSlashy ==~ /\w{1}:\\.+\\.+/

7. 多行斜线字符串

斜线字符串还能够跨越多行。这一点对于多行正则表达式非常有用。

比如:
def name = "vishal"
def path = "c:/groovy/"
def multilineslashy = /
    Hello $name
path $path
dollar = $
path = c:\/groovy
/
println multilineslashy

输出为:
    Hello vishal
        path c:/groovy/
        dollar = $
        path = c:/groovy

8. 斜线字符串中的美元符号$

在多行斜线字符串中,如果字符串内出现斜线/,那么它需要被转义。另外,如果字符串内出现了$美元符号(没有用于表达式时),也需要转义,否则会报MissingPropertyException异常。

比如:
def name = "vishal"
def path = "c:/groovy"
def multilineSlashy = /
  Hello $name
path = $path
dollar = $test
path = c:\/groovy
/
println multilineSlashy

输出:
Exception thrown
四月 17, 2013 9:11:24 下午 org.codehaus.groovy.runtime.StackTraceUtils sanitize
WARNING: Sanitizing stacktrace:
groovy.lang.MissingPropertyException: No such property: test for class: ConsoleScript3
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50)
at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:49)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:231)
at ConsoleScript3.run(ConsoleScript3:3)
at groovy.lang.GroovyShell.runScriptOrMainOrTestOrRunnable(GroovyShell.java:257)
at groovy.lang.GroovyShell.run(GroovyShell.java:481)
at groovy.lang.GroovyShell.run(GroovyShell.java:163)
at groovy.lang.GroovyShell$run.call(Unknown Source)
at groovy.ui.Console$_runScriptImpl_closure17.doCall(Console.groovy:951)
at groovy.ui.Console$_runScriptImpl_closure17.doCall(Console.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:909)
at groovy.lang.Closure.call(Closure.java:411)
at groovy.lang.Closure.call(Closure.java:405)
at groovy.lang.Closure.run(Closure.java:492)
at java.lang.Thread.run(Thread.java:722)
groovy.lang.MissingPropertyException: No such property: test for class: ConsoleScript3
at ConsoleScript3.run(ConsoleScript3:3)
目录
相关文章
|
10月前
groovy入门-GString
groovy入门-GString
92 0
|
Java
【Groovy】Groovy 动态语言特性 ( Groovy 语言与 Java 语言执行效率对比 | 以动态特性编译的 Groovy 类 | 以静态特性编译的 Groovy 类 )
【Groovy】Groovy 动态语言特性 ( Groovy 语言与 Java 语言执行效率对比 | 以动态特性编译的 Groovy 类 | 以静态特性编译的 Groovy 类 )
230 0
|
XML JSON Java
Groovy之高级语法
Groovy之高级语法
|
存储 Java 索引
Groovy入门
Groovy学习路线
383 0
Groovy入门
|
JavaScript 前端开发 Java
第二章 Groovy 基础
Groovy 是基于 JVM 虚拟机的一种动态语言,它的语法和 Java 非常相似,由 Java 入门Groovy,基本上没有任何障碍。Groovy 完全兼容 Java,又在此基础上增加了很多动态类型和灵活的特性,比如支持闭包,支持 DSL,可以说它是一门非常灵活的动态脚本语言。
253 0
第二章 Groovy 基础
|
Java API 数据安全/隐私保护
【Groovy】Groovy 语言特点简介 ( 支持 Java 语法 | 支持 Java 虚拟机 | Groovy 语言是动态语言 | Groovy 扩展 JDK | 编译时元编程 )
【Groovy】Groovy 语言特点简介 ( 支持 Java 语法 | 支持 Java 虚拟机 | Groovy 语言是动态语言 | Groovy 扩展 JDK | 编译时元编程 )
300 0
|
SQL 程序员 数据库
【Kotlin】Kotlin 领域特定语言 DSL 原理 一 ( DSL 简介 | 函数 / 属性扩展 )
【Kotlin】Kotlin 领域特定语言 DSL 原理 一 ( DSL 简介 | 函数 / 属性扩展 )
265 0
|
JSON Java C#
Groovy核心语法总结
Groovy是一种基于JVM,功能强大、类型可选,动态的、可与Java无缝衔接的编程语言。Groovy语法简洁、易于学习,可以大大提高开发人员的工作效率,可为Java程序添加强大的功能,包括脚本功能、特定领域的语言编写、运行时和编译时元编程以及函数式编程。本文将快速介绍核心语法,让读者快速入门。
1183 0
 Groovy核心语法总结
|
Web App开发 前端开发 JavaScript
《Kotlin 程序设计》第八章 Kotlin 集成Spring Boot开发
第八章 Kotlin 集成Spring Boot开发 正式上架:《Kotlin极简教程》Official on shelves: Kotlin Programming minimalist tutorial 京东JD:https://item.jd.com/12181725.html 天猫Tmall:https://detail.tmall.com/item.htm?id=558540170670 Java整个生态系统经过近20年的发展,已经非常成熟完整了。
1093 0
《Groovy极简教程》第8章 Groovy:领域特定语言(DSL)
《Groovy极简教程》第8章 Groovy:领域特定语言(DSL)
1275 0