更改字符串的Java奇怪问题[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我已经尝试过搜索这个,但后来我不知道该如何描述它。

我有一个方法,从hashmap格式化一些数据进入mySQL表:

private String valuesList() {
    String valuesList = "";
    HashMap<String,String> data = getData();
    for(Map.Entry<String, String> entry : data.entrySet()) {
        String value=entry.getValue();
        valuesList+="'"+value+"',";
    }
    valuesList = valuesList.substring(0, valuesList.length() - 1);
    return valuesList;
}

大多数情况下工作正常,但在某些情况下,其中一个值有一个撇号,这导致输出如下:

'4577314','18-02-2017','null','4566974','null','Overseas Domestic Workers' Rights Bill','1124','null'

最后请注意“海外家庭工人权利法案”。我认为通过改变很容易解决

valuesList+="'"+entry.getValue()+"',";

valuesList+="'"+entry.getValue().replace("'","")+"',";

但该方法现在在该行抛出一个空指针异常。事实上,对.trim()等字符串的任何改变都会做同样的事情,扔掉一个null

我现在完全被难倒了

java
1个回答
-1
投票

您可以像这样从值中转义引号

value = value.replaceAll("'","''");
© www.soinside.com 2019 - 2024. All rights reserved.