Java字符串在位置后按空格分隔

时间:2016-01-23 02:39:57

标签: java string

我有一个冗长的字符串,并希望将其分解为多个子字符串,因此我可以在菜单中将其显示为段落而不是单个长行。但是我不想在一个单词的中间分解它(所以每个n个角色都能完成工作)。

所以我希望在某个点之后第一次出现字符串中的任何字符时打破字符串(在我的例子中,字符将是一个空格和一个分号,但它们可以是任何东西)

类似的东西:

String result[] = breakString(baseString, // String
                              lineLength, // int
                              breakChars) // String

2 个答案:

答案 0 :(得分:0)

首先考虑使用break chars进行拆分,然后将该拆分产生的段的长度相加,直到达到行长。

答案 1 :(得分:0)

这是一种方法。我在“某个点之后第一次出现字符串中的任何字符”时表示在某个breakChars之后的lineLength的下一个实例应该是一行的结尾。因此,breakString("aaabc", 2, "b")会返回{"aaab", "c"}

static String[] breakString(String baseString, int lineLength, String breakChars) {
    // find `lineLength` or more characters of the String, until the `breakChars` string
    Pattern p = Pattern.compile(".{" + lineLength + ",}?" + Pattern.quote(breakChars));

    Matcher m = p.matcher(baseString);
    List<String> list = new LinkedList<>();
    int index = 0;
    while (m.find(index)) {
        String s = m.group();
        list.add(s);

        // find another match starting at the end of the last one
        index = m.end();
    }

    if (index < baseString.length() - 1) {
        list.add(baseString.substring(index));
    }

    return list.toArray(new String[list.size()]);
}