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

简介: 6. 斜线字符串 正如早先提到的,斜线可以用于定义字符串。用斜线定义字符串有一个优点:那就是,字符串本身的内容无需转义反斜线。比如:def winpathQuoted = 'C:\\windows\\system32'def winpathSlashy = /C:\win...

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)
目录
相关文章
|
监控 前端开发 测试技术
前端工程化的前端性能的性能测试/监控工具之WebPageTest
WebPageTest 是一个非常强大的前端性能测试工具,因为它可以在不同的设备和浏览器上测试和监控网页的性能,从而帮助开发者了解网页的实际性能表现。
893 0
|
5月前
|
Go vr&ar 图形学
把娱乐“搬到”你眼前:增强现实AR如何让文娱产业更卷更有趣?
把娱乐“搬到”你眼前:增强现实AR如何让文娱产业更卷更有趣?
454 8
|
JavaScript 前端开发 数据安全/隐私保护
小心通过QQ尾巴中的网址(Q-Zone.****qq.C0M)传播的Worm.Win32.Viking.r
小心通过QQ尾巴中的网址(Q-Zone.****qq.C0M)传播的Worm.Win32.Viking.r
7.1 向量及其线性运算
7.1 向量及其线性运算
288 0
|
安全 Linux Windows
【Linux】Linux操作系统
【Linux】Linux操作系统
|
人工智能
AIGC产品引发的教育行为变化
【1月更文挑战第4天】AIGC产品引发的教育行为变化
181 1
AIGC产品引发的教育行为变化
|
搜索推荐 算法 PHP
PHP 数组(Array) - 排序算法
PHP 数组(Array) - 排序算法
214 0
|
应用服务中间件 数据安全/隐私保护 nginx
vs2015自动窗口(查看变量的值)
问题:在使用vs2015时,调试无法看到变量的值,解决方案如下: 1.启动调试 2.调试——>窗口——>自动窗口(Ctrl+Alt+V,A) 如下图:   
2162 0
|
Web App开发
HTML标签
1、html基本结构         我的第一个网页            2、文本相关标签    -    color size face   align        预格式文本,让文本保持原来风格,英雄本色  特殊字...
1180 0