我在GWT中使用以下内容来查找字符串中的反斜杠并替换为\\。
String name = "\path\item";
name = RegExp.compile("/\\/g").replace(name, "\\\\");
但它不起作用,因为name = \ path \ item返回name = \ path \ item。
好的,我遵循Thomas Broyer的推荐和第一个 RegExp.compile(“\\”,“g”)。replace(bgPath,“\\\\”)给出:
Caused by: com.google.gwt.core.client.JavaScriptException: (SyntaxError): trailing \ in regular expression
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:237)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:132)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.regexp.shared.RegExp$.compile(RegExp.java)
at com.ait.gwt.authtool.client.ui.TicketViewer.<init>(TicketViewer.java:197)
at com.ait.gwt.authtool.client.AuthTool.onViewTicketBtnClicked(AuthTool.java:1942)
at com.ait.gwt.authtool.client.AuthTool.onMessageReceived(AuthTool.java:1995)
at com.ait.gwt.authtool.client.events.MessageReceivedEvent.dispatch(MessageReceivedEvent.java:44)
at com.ait.gwt.authtool.client.events.MessageReceivedEvent.dispatch(MessageReceivedEvent.java:1)
at com.google.gwt.event.shared.GwtEvent.dispatch(GwtEvent.java:1)
at com.google.web.bindery.event.shared.SimpleEventBus.doFire(SimpleEventBus.java:193)
at com.google.web.bindery.event.shared.SimpleEventBus.fireEvent(SimpleEventBus.java:88)
at com.google.gwt.event.shared.SimpleEventBus.fireEvent(SimpleEventBus.java:52)
和第二个 bgPath.replaceAll(“\\”,“\\\\”)给出:
Caused by: java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
^
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)
at com.ait.gwt.authtool.client.ui.TicketViewer.<init>(TicketViewer.java:198)
但是当我输入: bgPath = bgPath.replaceAll(Pattern.quote(“\”),Matcher.quoteReplacement(“\\”));
正常工作(!!),因为它给出了:[INFO] [gwt_app] - !!! bgPath =背景\\卡通\\图像
答案 0 :(得分:2)
RegExp.compile
相当于JS中的new Regexp
,因此参数不是regexp文字。您的代码应为RegExp.compile("\\", "g")
。
但对于这种特殊情况,name.replace("\\", "\\\\")
应该足够了。