【问题标题】:Java replaceALL for string字符串的 Java replaceALL
【发布时间】:2015-11-13 08:13:01
【问题描述】:

我有一个字符串:

100-200-300-400

我想将破折号替换为“,”并添加单引号使其变为:

 '100','200','300','400'

我当前的代码只能将“-”替换为“,”,我怎样才能加上单引号?

String str1 = "100-200-300-400";      
split = str1 .replaceAll("-", ",");

if (split.endsWith(",")) 
{
   split = split.substring(0, split.length()-1);
}

【问题讨论】:

    标签: java string replaceall


    【解决方案1】:

    你可以使用

    split = str1 .replaceAll("-", "','");
    split = "'" + split + "'";
    

    【讨论】:

    • 只会将整个字符串引用为 1 个单引号,'100,200,300,400'
    • @user3172596 我测试了它并得到了'100','200','300','400'replaceAll 调用添加了剩余的单引号。请注意,它与您的问题中的 replaceAll 呼叫不同。
    【解决方案2】:

    作为替代方案,如果您使用的是 java 1.8,那么您可以创建一个 StringJoiner 并将字符串拆分为 -。这样的时间效率会稍低一些,但如果考虑到例如 traling - 会更安全。

    一个小样本可能看起来像这样。

    String string = "100-200-300-400-";
    String[] splittet = string.split("-");
    StringJoiner joiner = new StringJoiner("','", "'", "'");
    for(String s : splittet) {
        joiner.add(s);
    }
    System.out.println(joiner);
    

    【讨论】:

    • 有java 1.6的解决方案吗?不使用 java 1.8
    • @user3172596 遗憾的是,它不包含在 1.6 jdk 中。否则,您需要使用正则表达式。 Eran 提供的解决方案应该可以工作。
    【解决方案3】:

    这对你有用:

    public static void main(String[] args) throws Exception {
        String s = "100-200-300-400";
        System.out.println(s.replaceAll("(\\d+)(-|$)", "'$1',").replaceAll(",$", ""));
    }
    

    O/P:

    '100','200','300','400'
    

    或者(如果您不想使用replaceAll() 两次。

    public static void main(String[] args) throws Exception {
        String s = "100-200-300-400";
        s = s.replaceAll("(\\d+)(-|$)", "'$1',");
        System.out.println(s.substring(0, s.length()-1));
    }
    

    【讨论】:

    • 你的正则表达式是否仅限于整数?我的值可能是:***-100-TSK-534
    • @user3172596 - 如果您有 abc-asa 等值,您可以用 [a-zA-Z]+ 替换 \\d+
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    • 2013-02-16
    相关资源
    最近更新 更多