Groovy:用简单的\转换字符串

时间:2018-02-09 18:30:34

标签: java groovy replace type-conversion backslash

我正在尝试转换我动态获取的字符串,将\加倍\或将它们转换为/(两者都适合我)。

它格式为:

d:\code\main

我无法在源头编辑它。

在我的测试中,我尝试使用replace或replaceAll函数,使用\到5 \\\,但我总是遇到这个错误:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: 
script15181726196231935876660.groovy: 4: unexpected char: '\' @ line 4, column 17. 
String main = "d:\code\main\blabla\blabla"
^ 

1 error 

    at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:302) 
    at org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:149) 
    at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:119) 
    at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:131) 
    at org.codehaus.groovy.control.SourceUnit.addError(SourceUnit.java:359) 
    at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:137) 
    at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:108) 
    at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:236) ...

有没有办法转换或重建这个变量而不会出现这个Java错误?

由于

2 个答案:

答案 0 :(得分:0)

\字符是转义字符https://en.wikipedia.org/wiki/Escape_character。因此,要将其用作文字值,请改用\\

String main = "d:\\code\\main\\blabla\\blabla"

答案 1 :(得分:0)

Dollar slashy stringSlashy string都允许使用反斜杠。

def s1 = /d:\code/
def s2 = $/d:\code/$
s1.equals(s2) // true

slashy string只有一种情况,反斜杠是一个特殊符号 - 如果它出现在正斜杠之前:

def s3 = /This - \/ - is the forward slash/ 
// This - / - is the forward slash

可以找到文档here