java怎么处理带引号的字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java怎么处理带引号的字符串相关的知识,希望对你有一定的参考价值。
是从文件读出来的html,属性值有引号 我一行一行赋给了string 然后输出有错 怎么处理
java可以处理带有双引号的字符串
使用转义字符
ublic class Test
public static void main(String[] args)
String str1 = "\\"name\\"";//字符串两边含有双引号
String str2 = "name \\"is\\" wgb";//字符串中间含有双引号
String str3 = "\\\\name";//使用转义字符还可以使字符串包含其他字符
System.out.println("字符串一:" + str1);
System.out.println("字符串二:" + str2);
System.out.println("字符串三:" + str3);
结果:
参考技术A 试试用replace替换一遍呢?string1=string.replace(/"/g,"'");
每一行双引号都先转换成单引号试试?追问
我就是要replace处理,结果读的都不对 何况处理了
追答你是用的什么读文件?
参考技术B html的引号可以使用单引号,追问可以啊,但是我从文件读出来的,总不能把html一个一个改了吧
追答读出来的用变量接收啊
参考技术C 读出来 使用replace把双引号换成单引号不行吗? 参考技术D 你可以在后台里拿到那个值的时候处理一下,截取字符串什么的,希望对你有帮助。带引号的Thymeleaf内联javascript不起作用
【中文标题】带引号的Thymeleaf内联javascript不起作用【英文标题】:Thymeleaf inline javascript with quotation mark not working 【发布时间】:2020-08-21 03:37:39 【问题描述】:我有一个使用 Thymeleaf 的 Spring Boot 应用程序。我正在使用字符串值设置模型变量,并希望将其用作 javascript 中的变量值。
在 Java 中我会做类似的事情:
StringBuffer data = new StringBuffer();
data.append("[ [\"").append(name1).append("\" ], \"").append(name2).append("\"] ] ");
...
model.addAttribute("dataString", data);
我的 HTML 代码如下:
<script th:inline="javascript">
/*<![CDATA[*/
var dataSet = [[$dataString]];
/*]]>*/
...
</script>
JavaScript 中的结果应该是:
var dataSet = [ ["Name1"], ["Name2"] ];
但我得到的是 HTML:
var dataSet = "[ [\"Name1\"], [\"Name2\"] ]";
我在 HTML/JavaScript 中尝试了不同的东西:
只使用一个括号[$dataString]
-> 得到var dataSet = [$dataString];
;
使用这个:/*[$dataString]*/
-> 得到var dataSet = /*[$dataString]*/;
;
或:/*[[$dataString]]*/
-> 结果为 var dataSet = "[ [\"Name1\"], [\"Name2\"] ]";
删除CDATA
的东西->没有改变
在 JavaScript 中没有任何结果会产生正确的字符串。 如何获得正确的字符串?
【问题讨论】:
欢迎来到 Stack Overflow!请拨打tour(您将获得徽章!) 【参考方案1】:您不应该将 JSON 字符串从您的控制器传递到您的模型。相反,您应该传递常规 Java 对象并让 Thymeleaf 为您进行编码。例如,如果您想要一个如下所示的数据集:
[ ["Name1"], ["Name2"] ]
然后你应该像这样将它添加到你的模型中:
// This is an array of arrays, just like [ ["Name1"], ["Name2"] ]
String[][] dataset = "Name1", "Name2";
model.addAttribute("dataString", dataset);
然后输出
<script th:inline="javascript">
/*<![CDATA[*/
var dataSet = [[$dataString]];
/*]]>*/
</script>
将产生 JavaScript:
var dataSet = [ ["Name1"], ["Name2"] ];
如您所愿,无需手动创建字符串。这当然适用于各种 Java 对象,甚至会自动将 getter 和 setter 转换为常规 JavaScript 对象。
当然,如果你真的只是想直接从你的模型中添加 JSON 字符串,你当然可以使用未转义的内联。
var dataSet = [($dataString)];
但这确实与这些东西的工作原理背道而驰。
【讨论】:
使用String[][] dataset = "Name1", "Name2";
显然优于我的答案。它还促使我阅读documentation,并重新思考我自己的一些代码。以上是关于java怎么处理带引号的字符串的主要内容,如果未能解决你的问题,请参考以下文章