In my Java web app I pull a property from the database and send it to the view/browser layer via the controller.

In the HTML, I am expecting the string to look like this:

9" nails

Instead it looks like this:

"9\" nails"

So I plugged Apache StringEscapeUtils into my service layer and ran unescapeJava() on the property. The result became this:

"9" nails"

A slight improvement but still not right.

So my question is whether this is not just a String escaping issue but a more fundamental data issue. In other words, if what I have to do to achieve the desired output is to strip double quotes from the beginning and end of this property, there is a potential to affect other rows of data in unexpected ways - in which case I would have to visually inspect the entire database to make sure I am not displaying some other rows incorrectly based on the meaning of the double quotes character in those other strings.

Any direction here would be appreciated. Thanks.

有帮助吗?

解决方案

It looks like some layer adds quotes to the front and back of each string. Without knowing more I suggest you do a simple str = str.substring(1, str.length() - 1) to remove the two quotes that were added. We can't tell you if it's about some 'fundamental data issue" because we don't see anything else.

If you want to get really safe you can just use indexOf("\""); and lastIndexOf("\"");, see if they are respectively indices 0 and str.length() - 1 and if they are: strip them.

其他提示

You can just replace the string after you receive the data from the API call before you send it to the server using Java

String foo = "9\\\" nails";
foo = foo.replace("\\\"", "\"");
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top