java - 我想在特定长度后拆分字符串而不剪切任何单词,不等于字符串
问题描述
当长度为 35 时,我想拆分像“仅卢比 241 和 68”这样的字符串,我想将此字符串拆分为 2。我尝试使用此代码拆分字符串。
String text = "Rupees Two Hundred Forty One and Sixty Eight only";
List<String> parts = new ArrayList<>();
int length = text.length();
for (int i = 0; i < length; i += 35) {
parts.add(text.substring(i, Math.min(length, i + size)));
但输出是这样的。
[Rupees Two Hundred Forty One and Si, xty Eight only]
但我想像这样拆分字符串。
[Rupees Two Hundred Forty One and, Sixty Eight only]
拆分字符串时没有剪切词。该字符串每次根据账单金额而变化。
解决方案
您可能无法完全做到这一点。但是使用 String.indexOf() 找到从 35 开始的第一个空格。然后使用 substring 方法来划分字符串。
String text = "Rupees Two Hundred Forty One and Sixty Eight only";
int i = text.indexOf(" ", 35);
if (i < 0) {
i = text.length();
}
String part1 = text.substring(0,i).trim();
String part2 = text.substring(i).trim();
这是另一种方法。尚未对边境案件进行全面检查。
String[] words = text.split(" ");
int k;
part1 = words[0];
for (k = 1; k < words.length; k++) {
if (part1.length() >= 35 - words[k].length()) {
break;
}
part1 += " " + words[k];
}
if (k < words.length) {
part2 = words[k++];
while (k < words.length) {
part2 += " " + words[k++];
}
}
System.out.println(part1);
System.out.println(part2);
推荐阅读
- javascript - 如何在不增加网络负担的情况下推送所有待处理的请求?
- matplotlib - Matplotlib 表格大小和位置
- python - Python PIL 文本放置居中
- azure-cosmosdb - 逻辑应用到 CosmosDB - 从文档中提取的 PartitionKey 与标题中指定的不匹配
- amazon-web-services - AWS EC2 IP 更改影响正在运行的作业
- c++ - C++ const char* 弄乱了多重引导标头
- javascript - 为什么我的代码即使在按 ctrl + s(保存)后也不运行?
- python - 如何检测和改变RGB图片中的颜色
- c++ - 如何全局更改向量内的对象c ++
- mysql - 迭代python mysql输出