【发布时间】:2014-10-14 04:48:55
【问题描述】:
我能够根据给定的第 n 个字符限制将文本段落分解为子字符串。我的冲突是我的算法正是这样做的,并且正在分解单词。这就是我卡住的地方。如果字符限制出现在一个单词的中间,我怎样才能回溯到一个空格,以便我的所有子字符串都有完整的单词?
这是我正在使用的算法
int arrayLength = 0;
arrayLength = (int) Math.ceil(((mText.length() / (double) charLimit)));
String[] result = new String[arrayLength];
int j = 0;
int lastIndex = result.length - 1;
for (int i = 0; i < lastIndex; i++) {
result[i] = mText.substring(j, j + charLimit);
j += charLimit;
}
result[lastIndex] = mText.substring(j);
我正在使用任何第 n 个整数值设置 charLimit 变量。 mText 是带有一段文本的字符串。关于如何改进这一点的任何建议?提前谢谢你。
我收到了很好的回应,所以你知道我做了什么来弄清楚我是否登陆了一个空间,我使用了这个 while 循环。我只是不知道如何从这一点纠正。
while (!strTemp.substring(strTemp.length() - 1).equalsIgnoreCase(" ")) {
// somehow refine string before added to array
}
【问题讨论】:
-
您可以检查 mText 长度是否大于或等于 charlimit 与当前总单词长度之间的差异。
-
检查每个字符是否为空白,每次为空白时,更新一个保存空白索引的变量。一旦你到达最后一次迭代,如果下一个字符不是空格,你就知道你在一个单词的中间。在这种情况下,您可以使用最后一个空白索引来了解您需要停止的位置。
-
@Jurgen,这也是我的想法。但是,这是我需要帮助的部分。让我告诉你我尝试了什么,但它不起作用。
-
您可以使用 StringBuilder 并附加每个迭代的空白,以便附加每个单词,然后设置您的字符限制,并使用模数在每个循环中循环吗?