-6ren"> -所以我试图编写一个方法,通过插入 xml 标签来分割长度超过 160 的字符串。我尝试过使用和修改java的wordWrap方法。但这似乎在句号或 处分割句子。我不希望发生这种情况,因为这些字符串中的-6ren">
gpt4 book ai didi

java - 在字符串中每隔 ""之前或 160 个字符处插入

转载 作者:行者123 更新时间:2023-12-01 13:21:21 28 4
gpt4 key购买 nike

所以我试图编写一个方法,通过插入 xml 标签来分割长度超过 160 的字符串。我尝试过使用和修改java的wordWrap方法。但这似乎在句号或 处分割句子。我不希望发生这种情况,因为这些字符串中的 ID 显示如下:FID.1262。

我目前的方法:

private String tests(String Message) {
StringBuilder text = new StringBuilder(Message);
int size = Message.length();
int size1 = 160;
while (!Message.substring(size1 - 1, size1).equals(" ")) {
size1--;
if (Message.substring(size1 - 1, size1).equals(" ")) {
text.insert(size1, "<SPLIT>");
text.replace(size1 - 1, size1, "");
return "" + text;
}
}
text.insert(size1, "<SPLIT>");
text.replace(size1 - 1, size1, "");
text.trimToSize();
return "" + text;
}

输出: 这是一条测试消息,当 while 循环向后迭代字符串时,该消息将被拆分。然后,它将在 160 个字符之前的最后一个空格中放置一个拆分为 is 的 xml 标记。

问题是这个方法只会分割一个字符串一次,无论它有多长。我需要的是它能够按照空格以每 160 个或更少的字符分割 n 大小的字符串。

如果有人可以给我任何指示。事实证明这比实际听起来要困难得多......

最佳答案

您需要的是 java.text.BreakIterator

您将使用以下方式获得单词迭代器

 BreakIterator#getWordInstance()

以下是如何使用它的示例:

public static void main(String args[]) {
if (args.length == 1) {
String stringToExamine = args[0];
//print each word in order
BreakIterator boundary = BreakIterator.getWordInstance();
boundary.setText(stringToExamine);
int start = boundary.first();
for (int end = boundary.next();
end != BreakIterator.DONE;
start = end, end = boundary.next()) {
System.out.println(stringToExamine.substring(start,end));
}
}
}

上面的示例打印字符串中的每个单词。您可以通过添加单词长度来根据需要操作它,如果单词长度大于 160,则不要添加下一个单词,而是添加您的

希望这有帮助。

关于java - 在字符串中每隔 ""之前或 160 个字符处插入 <SPLIT>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22009571/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com