首页 > 解决方案 > 我想在特定长度后拆分字符串而不剪切任何单词,不等于字符串

问题描述

当长度为 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]

拆分字符串时没有剪切词。该字符串每次根据账单金额而变化。

标签: javastringjava-8javafx-8

解决方案


您可能无法完全做到这一点。但是使用 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);


推荐阅读