2011-02-24 202 views
3

删除反斜杠我有一个这样的URL:字符串对象http:\/\/www.example.com\/exampleJava中,字符串对象

有人能告诉我,怎样去除反斜杠?

我正在为黑莓系统编程。

回答

7

String.replace(CharSequence, CharSequence)

String myUrl = "http:\\/\\/www.example.com\\/example"; 
myUrl = myUrl.replace("\\",""); 
+0

这是行不通的,它显示无效字符常量 – Kotibab 2011-02-24 11:54:28

+0

我只是忘了躲避backslahes以允许把它们放在一个String常量(编辑)中。我假设你正在接收的字符串没有这样声明。 – 2011-02-24 11:57:22

+0

@Kevin:这是混淆我不知道为什么,但“Kotibab”似乎有“\ /”,它 - 我猜应该用“/”代替。所以 @Kotibab:你可能想尝试myUrl.replace( “\”, “”); (难道是单或双引号,我不知道,但应该是双,因为我把它。) – AudioDroid 2011-02-24 12:00:30

6

@凯文的回答包含一个致命的问题。 String.replace(char, char)用一个字符替换一个字符的出现。它不会删除字符。

而且''是不是有效的Java因为有一个空字符没有这样的事情。

这里有一些解决方案,实际上应该工作(和编译):

String myUrl = "http:\\/\\/www.example.com\\/example"; 
    fixedUrl = myUrl.replace("\\", ""); 

这只是删除了每个反斜线不考虑上下文。

fixedUrl = myUrl.replace("\\/", "/"); 

这会用普通的正斜杠替换正斜杠。

fixedUrl = myUrl.replaceAll("\\\\(.)", "\\1"); 

此“去逃逸” 在String任何转义序列,正确处理转义反斜杠,而不是去除斜杠。该版本使用一组来捕获反斜杠后面的字符,然后在替换字符串中引用它。

注意的是,在最后的情况下,我们使用的是replaceAll方法,做正则表达式匹配/替换,而不是文字字符串匹配/替换。因此,我们需要在第一个参数中两次跳过反斜杠;一次是因为反斜杠必须在字符串文字中转义,另一种原因是反斜杠必须在正则表达式中转义,如果您希望反斜杠代表文字反斜杠字符。


我编程为黑莓系统,如果这是任何关系的。

它。黑莓是J2ME平台,并String的J2ME版本(见javadoc支持String.replace(char, char),这(正如我们上面提到的)不能删除字符。在J2ME平台上,您需要将String加载到StringBuffer中,并使用循环和StringBuffer.delete(...)StringBuffer.replace(...)

(正是这样的东西,使得Android更易于使用...)

+0

谢谢你的帮助 – Kotibab 2011-02-24 14:14:00

0

试试这个:

return myUrl.replaceAll("\\\\(.)", "\\/"); 
0

只有这对我的作品 -

String url = "http:\/\/imgd2.aeplcdn.com\/310x174\/cw\/cars\/ford\/ford-figo-aspire.jpg"; 

    for(int i = 0; i < url.length(); i++) 
     if(url.charAt(i) == '\\') 
      url = url.substring(0, i) + url.substring(i + 1, url.length());