用空格替换转义字符

时间:2014-04-11 14:01:20

标签: java replace space

我被要求用空格替换字符串中的转义字符。

我一直在尝试下面

String replace(String data)
    {
        String strSpecial = "";
        strSpecial = " \f\n\r\t\'\"\\";     

        char charArray[] = strSpecial.toCharArray();
        String strOutData = data;
        for (int i =0;i<charArray.length;i++)
        {  
              strOutData = strOutData.replace(charArray[i], ' ');
    }       
        return(strOutData);

    }

我得到错误 - “未终止的字符串常量”

当我使用任何字符而不是空格来替换转义字符时,它正在工作。

请建议

由于 和Sandeep

6 个答案:

答案 0 :(得分:3)

我会使用正则表达式:

String replace(String data) {
    return data.replaceAll("[\f\n\r\t\'\"\\\\]", " ");
}

注意实现单个字面正则表达式反斜杠所需的4个反斜杠; String文本中的每对反斜杠在String中生成一个文字反斜杠,并且String中生成的反斜杠对在正则表达式中生成一个文字反斜杠。

答案 1 :(得分:2)

我在记事本中写了这个,因为我不在我的机器上,所以我不是百分之百,这是有效的,但你可以试试。我可以告诉你的是,如果你不想使用正则表达式,你应该使用字符串构建器来替换字符串中的字符,因为字符串在java中是不可变的,因此每次要进行替换时,代码都必须返回一个新字符串,这可能需要一段时间,具体取决于数据中必须替换的字符数。

 public string replace(String data)
 {
     String strSpecial = "";
     strSpecial = " \f\n\r\t\'\"\\";
     StringBuilder sb = new StringBuilder();     

     char charArray[] = strSpecial.toCharArray();
     String strOutData = data;

     for (int i =0;i<data.length();i++)
     {  
         for(int j=0; j < charArray.lenght(); j++)
         {
             if(strOutData.charAt(i) == charArray[j])
                 sb.append(' ');
             else
                 sb.append(strOutData.charAt(i));
         }
     }       
         return(sb.toString());


 }

答案 2 :(得分:0)

您的代码将处理在java中保留的字符,如:&#39; \&#39; ,如果我们使用&#39; \&#39;它将不显示字符串终止没有任何首选的方法,如&#34; \&#34;&#34;

试试这个:

String replace(String data)
    {
        String strSpecial = "";
        strSpecial = " \f\n\r\t\'\"\\";     


        return(strSpecial.replace("\"", " "));

    }

答案 3 :(得分:0)

据我所知,你的方法没有错。

检查您的来电JSP代码。如果您在Javascript函数中使用此函数,请检查解析后的Javascript代码是否仍然有意义。

最简单的方法是检查生成的HTML。也许你在检查时可能会发现问题。

答案 4 :(得分:0)

为什么你认为它不起作用?我使用以下内容进行测试并且有效。

    string strSpecial = " \f\n\r\t\'\"\\";
    string strtmp2 = strSpecial.Replace('\f', ' ').Replace('\n', ' ').Replace('\r', ' ').Replace('\t', ' ').Replace('\'', ' ').Replace('\"', ' ').Replace('\\', ' ');

答案 5 :(得分:0)

我运行了你的代码,运行正常。这是我运行的代码

public static void main(String args[]) {

    String strSpecial = "";
    strSpecial = " \f\n\r\t\'\"\\";     

    char charArray[] = strSpecial.toCharArray();
    String strOutData = "S\t\"\'\r\f\n\n\'J";
    for (int i =0;i<charArray.length;i++)
    {  
          strOutData = strOutData.replace(charArray[i], ' ');
}       
    System.out.println(strOutData);
} 

您能为我提供您正在尝试的输入吗? 虽然,从我这边来说,正确的方法是使用正则表达式