【问题标题】:Is there a left()-function for Java strings?Java 字符串是否有 left() 函数?
【发布时间】:2013-06-26 10:41:09
【问题描述】:

我有一个未知长度的字符串 str(但不是 null)和给定的最大长度 len,这必须适合。我要做的就是在 len 处剪切字符串。

我知道我可以使用

str.substring(0, Math.min(len, str.length()));

但这并不方便,如果我尝试编写这样的堆叠代码

code = str.replace(" ", "").left(len)

我知道我可以编写自己的函数,但我更喜欢现有的解决方案。 Java 中是否存在现有的 left() 函数?

【问题讨论】:

  • 不,没有 - 你所拥有的是 Java String 类。可能有带有其他方法的外部库 - 或者您可以编写自己的方法。
  • 没有内置任何东西,但是 Apache commons 有 StringUtils 类,它有一个适合你的 left 函数。

标签: java string


【解决方案1】:

没有内置任何东西,但是 Apache commons 有 StringUtils 类,它有一个适合你的left 函数。

【讨论】:

    【解决方案2】:

    如果您不想添加 StringUtils 库,您仍然可以像这样使用它:

    String string = (string.lastIndexOf(",") > -1 )?string.substring(0, string.lastIndexOf(",")): string;
    

    【讨论】:

      【解决方案3】:

      使用拆分。

      String str = "Result string Delimiter Right String";
      System.out.println(str.split("Delimiter")[0].trim());
      

      输出:“结果字符串”

      【讨论】:

        【解决方案4】:

        不,String 类中没有 left(),您可以参考 API。但正如@Mark 所说,Apache StringUtils 有几种方法:leftPad()rightPad()center()repeat()。你也可以检查 这个:http://www.jdocs.com/lang/2.1/org/apache/commons/lang/StringUtils.html

        【讨论】:

          【解决方案5】:

          你可以使用字符串Format

          在此示例中,格式说明符 "%-9s" 表示最少 9 个字符左对齐 (-)。 "%-9.9s" 表示最多 9 个字符。

          System.out.println (String.format("%-9.9s","1234"));
          System.out.println (String.format("%-9.9s","123456789ABCD"));
          int len=9;
          System.out.println (String.format("%-"+len+"."+len+"s","123456789ABCD"));
          

          打印:

          1234     
          123456789
          123456789
          

          在 OP 的情况下,它会是这样的:

          static final int MAXLEN=9;
          code = String.format("%-"+MAXLEN+"."+MAXLEN+"s",str.replace(" ", ""));
          

          【讨论】:

            【解决方案6】:

            将下面的函数放在一个类中:

             public static String getLeftString(String st,int length){
                int stringlength=st.length();
            
                if(stringlength<=length){
                    return st;
                }
            
                return st.substring((stringlength-length));
            }
            

            【讨论】:

            • 这会得到字符串的结尾,所以它更类似于right();
            【解决方案7】:

            就我而言,我只想获取日期。

            String s = "date:2021-01-01";

            int n = s.length() - 10; //10 是日期的长度

            String result = s.substring(n);

            结果将是“2021-01-01”;

            【讨论】:

            • 这没有回答问题。该问题询问是否有 existing 方法来执行此操作。它不问怎么做。此外,您的代码实际上正在实现与 OP 指定的不同的东西。仔细阅读他的代码。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-08-25
            • 2020-03-03
            • 2011-01-02
            • 2014-02-11
            • 1970-01-01
            相关资源
            最近更新 更多