使用 Java 将单引号 (') 附加到特殊字符串

Append single quote (') to a Special Character String using Java

我想为仅包含特殊字符的字符串附加单引号。这就是我想要实现的目标:-

String sp = ''{+#)''&$;

结果应该是:-

'''' {+#)''''&$

这意味着对于每个单引号,我们也需要在该特定索引处附加 1 个单引号。

下面是我试过的代码:-

public static String appendSingleQuote(String randomStr) {
        if (randomStr.contains("'")) {
            long count = randomStr.chars().filter(ch -> ch == '\'').count();
            for(int i=0; i<count; i++) {
                int index = randomStr.indexOf("'");
                randomStr = addChar(randomStr, '\'', index);
            }
            System.out.println(randomStr);
        }
        return randomStr;
    }

    private static String addChar(String randomStr, char ch, int index) {
        return randomStr.substring(0, index) + ch + randomStr.substring(index);
    }

但这给出的结果是这样的:-

'''''' {+#)''&$

对此有什么建议吗?字符串可以包含偶数和奇数个单引号。

您只需要 replace :

String str = "''{+#)''&$";
str = str.replace("'", "''");

产出

''''{+#)''''&$

您只需要使用 String .replaceAll() method:

String sp =" ''{+#)''&$";
sp.replaceAll("\'", "''")

这是一个live working Demo

注:

.replace().replaceAll() 就足够时,使用 for 循环是一种矫枉过正,无需重新发明轮子。

YCF_L的解决方案应该可以解决您的问题。但是如果你仍然想使用你的方法,你可以试试下面的方法:

public String appendSingleQuote(String randomStr) {
    StringBuilder sb = new StringBuilder();
    for (int index = 0 ; index < randomStr.length() ; index++) {
        sb.append(randomStr.charAt(index) == '\'' ? "''" : randomStr.charAt(index));
    }
    return sb.toString();
}

它只是遍历您的字符串并将每个单引号 (') 更改为 ('')