【发布时间】:2014-11-09 07:05:12
【问题描述】:
如何在保持单词边界的同时将字符串分割成最大字符长度的相等部分?
例如,如果我想将字符串“hello world”拆分为最多 7 个字符的相等子字符串,它应该返回我
"hello "
和
"world"
但我当前的实现返回
"hello w"
和
"orld "
我正在使用从Split string to equal length substrings in Java 获取的以下代码将输入字符串分成相等的部分
public static List<String> splitEqually(String text, int size) {
// Give the list the right capacity to start with. You could use an array
// instead if you wanted.
List<String> ret = new ArrayList<String>((text.length() + size - 1) / size);
for (int start = 0; start < text.length(); start += size) {
ret.add(text.substring(start, Math.min(text.length(), start + size)));
}
return ret;
}
是否可以在将字符串拆分为子字符串时保持单词边界?
更具体地说,我需要字符串拆分算法来考虑空格提供的单词边界,而不是在拆分字符串时仅仅依赖字符长度,尽管这也需要考虑,但更像是一个最大范围字符而不是硬编码的字符长度。
【问题讨论】:
-
你能再添加一个输入/输出的例子吗?
-
当然,例如“需要速度紧追”,最大字符范围指定为 16 ...我需要根据单词边界拆分字符串,因此输出应该是“需要速度”和“紧追”,但目前的实现是我有我得到“极品飞车h”和“ot追求”
-
所以规则是在最大字符范围或最大字符范围之前的空白处分割?如果第一个单词比字符范围长怎么办?你在中间分开吗?示例:“reallylongwordisfirst and here are several regular words”,长度为 7,您是否期望:“reallylongwordisfirst”“和”“here”“是”“several”“regular”“words”?
-
我的最大长度为 4000 个字符。我想知道是否有一个包含 4000 个字符的单词,但无论如何,这适用于 android 文本到语音引擎,如果它会混淆单词的发音单词边界没有被考虑在内,另一方面它也有一个最大范围的字符,它可以一次接受......所以我希望现在你能看到我的困境
-
您是否允许对超过限制的单词进行拆分?例如,如果您将最大字符数设置为
7,应该如何拆分"hohohohoho merry Christmas?