我想在特定长度后拆分字符串而不剪切任何单词,不等于字符串

Abd*_*d A 5 java string java-8 javafx-8

当长度为 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)));
Run Code Online (Sandbox Code Playgroud)

但输出是这样的。

[Rupees Two Hundred Forty One and Si, xty Eight only]

但我想像这样拆分字符串。

[Rupees Two Hundred Forty One and, Sixty Eight only]

分割字符串时没有切词。字符串根据账单金额每次都不同。

WJS*_*WJS 2

你可能无法完全做到这一点。但是使用 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();
Run Code Online (Sandbox Code Playgroud)

这是一种替代方法。尚未对边境案件进行全面检查。

      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);

Run Code Online (Sandbox Code Playgroud)