【问题标题】:Cut Java String at a number of character在多个字符处剪切 Java 字符串
【发布时间】:2013-07-16 20:06:59
【问题描述】:

我想在这个String长度> 50时剪切一个Java String,并在字符串末尾添加“...”。

示例:

我有以下 Java 字符串:

String str = "abcdefghijklmnopqrtuvwxyz";

我想在长度 = 8 处切割字符串:

结果必须是:

String strOut = "abcdefgh..."

【问题讨论】:

  • 通常剪掉更有意义,这样长度不会超过 N 并带有省略号。不同之处在于,在您的示例中,9、10 或 11 个字符串将被剪切,即使它们更短或长度相同。

标签: java string


【解决方案1】:

使用子串并连接:

if(str.length() > 50)
    strOut = str.substring(0,7) + "...";

【讨论】:

    【解决方案2】:

    StringUtils.abbreviate("abcdefg", 6);

    这将为您提供以下结果:abc...

    其中6是需要的长度,“abcdefg”是需要缩写的字符串。

    【讨论】:

    • 如果你写了'并且“abcfudhrenflöerhbfhlredbl”是......'我的大脑会更快地理解你的意思。 :D :D 还是谢谢 :)
    • 这个答案应该被接受,因为它是最准确的。
    【解决方案3】:

    使用子字符串

    String strOut = "abcdefghijklmnopqrtuvwxyz"
    String result = strOut.substring(0, 8) + "...";// count start in 0 and 8 is excluded
    System.out.pritnln(result);
    

    注意:substring(int first, int second) 有两个参数。第一个是包容性的,第二个是排他性的。

    【讨论】:

      【解决方案4】:

      雅加达公共StringUtils.abbreviate()。如果由于某种原因您不想使用 3rd-party 库,请至少复制 source code

      与迄今为止的其他答案相比,这样做的一大好处是,如果你传入 null,它就不会抛出。

      【讨论】:

        【解决方案5】:

        您可以使用安全子字符串:

        org.apache.commons.lang3.StringUtils.substring(str, 0, LENGTH);
        

        【讨论】:

          【解决方案6】:

          您可以使用String#substring()

          if(str != null && str.length() > 8) {
              return str.substring(0, 8) + "...";
          } else {
              return str;
          }
          

          但是,您可以创建一个函数来传递可以显示的最大字符数。只有当指定的宽度不足以容纳字符串时,省略号才会插入。

          public String getShortString(String input, int width) {
            if(str != null && str.length() > width) {
                return str.substring(0, width - 3) + "...";
            } else {
                return str;
            }
          }
          
          // abcdefgh...
          System.out.println(getShortString("abcdefghijklmnopqrstuvwxyz", 11));
          
          // abcdefghijk
          System.out.println(getShortString("abcdefghijk", 11)); // no need to trim
          

          【讨论】:

            【解决方案7】:

            可能是这样的:

            String str = "abcdefghijklmnopqrtuvwxyz";
            if (str.length() > 8)
                str = str.substring(0, 8) + "...";
            

            【讨论】:

              【解决方案8】:
              String strOut = str.substring(0, 8) + "...";
              

              【讨论】:

                猜你喜欢
                • 2013-01-14
                • 1970-01-01
                • 2018-02-19
                • 1970-01-01
                • 1970-01-01
                • 2023-03-19
                • 1970-01-01
                • 2020-01-29
                • 2015-08-04
                相关资源
                最近更新 更多