首页 > 解决方案 > 如何从java中的字符串中删除每12个字符

问题描述

假设我有一个这样的字符串:

String str = "~asdfl;kjx,~rgadfaeg,dsafnewgfljka;ldfjsfa;dlkjfa;lvjvbnaber;fwelfjadfafa"

int character = 12

我想要做的是删除字符串中的每 12 个字符,所以我会删除第 12 个索引,然后是第 24 个,然后是第 36 个,等等,直到字符串结束。

我删除的索引(每 12 次或每 2 次)必须等于我拥有的字符变量,因为该变量会发生变化。

我试着用正则表达式来做这个:

System.out.println(s.replaceAll(".(.)", "$12"));

但它没有用。有什么帮助吗?

标签: java

解决方案


有时,您只需要一个简单的for循环:

public class Test {
    public static void main(String[] args) {
        String str = "~asdfl;kjx,~rgadfaeg,dsafnewgfljka;ldfjsfa;dlkjfa;lvjvbnaber;fwelfjadfafa";
        int character = 12;

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            if ((i + 1) % character != 0) {
                sb.append(str.charAt(i));
            }
        }
        String result = sb.toString();

        System.out.println(result);
    }
}

如果您坚持使用正则表达式,您可以将character变量插入到表达式中,如下所示:

public class Test {
    public static void main(String[] args) {
        String str = "~asdfl;kjx,~rgadfaeg,dsafnewgfljka;ldfjsfa;dlkjfa;lvjvbnaber;fwelfjadfafa";
        int character = 12;

        System.out.println(str.replaceAll("(.{" + (character - 1) + "}).", "$1"));
    }
}

推荐阅读