我被要求用空格替换字符串中的转义字符。
我一直在尝试下面
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
答案 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);
}
您能为我提供您正在尝试的输入吗? 虽然,从我这边来说,正确的方法是使用正则表达式