Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 替换“\'&引用;使用任何其他字符串';s替换()_Java_String_Replace_Special Characters - Fatal编程技术网

Java 替换“\'&引用;使用任何其他字符串';s替换()

Java 替换“\'&引用;使用任何其他字符串';s替换(),java,string,replace,special-characters,Java,String,Replace,Special Characters,我不能用字符串进行简单的操作,请用*替换\' 示例:t'est\'->t'est* 我已经尝试了replace和replaceAll方法: 字符串s的值为:“t'est\” 但无论如何我都得不到结果。你不必逃避 只要写 s.replace("'", "*"); 代替 编辑: 如果你想匹配\,你应该试试 s.replace("\\'", "*"); 第一个反斜杠将转义第二个反斜杠,'将保持“未转义”您确定s的值吗“不是有意义的转义字符,因此如果编写String s=“t'est\”,则s的值

我不能用字符串进行简单的操作,请用*替换\'

示例:
t'est\'
->
t'est*

我已经尝试了replace和replaceAll方法:

字符串s的值为:
“t'est\”

但无论如何我都得不到结果。

你不必逃避 只要写

s.replace("'", "*");
代替


编辑:

如果你想匹配\,你应该试试

s.replace("\\'", "*");

第一个反斜杠将转义第二个反斜杠,'将保持“未转义”

您确定
s
的值吗
不是有意义的转义字符,因此如果编写
String s=“t'est\”
,则
s
的值将只是
“t'est”
。要包含附加的
\
字符,您需要通过写入
String s=“t'est\\”
对其进行转义。然后,我认为
“\\\'”
将是用于查找它的正则表达式。

怎么样:

String s="t\'est\\\'";
s = s.replaceAll("\\\\'", "*");
System.out.println(s);
产生:

t'est*

当您说字符串s的值为“t'est\”时,我用

对您的字符串进行了转义,您的意思是它在源代码中就是这样显示的吗?因为,如果是这样的话,您使用的字符串as's'实际上是“t'est'”,这意味着您将永远找不到要替换的“\”


如果它被声明为“t'est\”,那么它将包含“\”。

\
实际上是一个转义的
。 如果你想有一个实际的\',你需要转义斜杠,即write
\\\\'

然后您需要将其替换为
\\\'
。在这种情况下,对于java,每对斜杠都会生成一个转义斜杠
\
,而对于正则表达式,生成的
\\'
就是一个
\'

<

String s = "t'est\\'";
System.out.println(s);
System.out.println(s.replace("\\", "*").replace("*'", "*"));
以下是输出结果:

t'est\'
t'est*

如果我的理解不正确或需要修改,请告诉我

结果应该是
t'est*
而不是
t*est*
。您的解决方案将替换这两个
结果应为
t'est*
否,将进行测试。抱歉,我以为他添加反斜杠是因为他想转义“您是在侧边写入字符串,还是打印字符串以查看内容?”?在哪一点上,你觉得它像是“最好的”?这一点很重要,因为其中包含\转义的数量。是的,我确信字符串s在每一行中都是用s=“t'est\”初始化的。问题是我不能修改s,因为它是我从服务器获取的sql查询的一部分…@user3057179如果您在控制台中看到这个字符串:
t'est\'
,那么在java文件中它应该写为:string s=“t'est\\\”;或字符串s=“t'est\\”;问题是我有一个查询要插入数据库,我需要将\'替换为“”(双单引号),所以我不能这样做。使用:StringEscapeUtils.escapeSql(),或者类似的东西怎么样?它似乎不受欢迎。我将这个词放在一个包含sql语句的文本文件中。看起来是一个简单的答案!
t'est\'
t'est*