【问题标题】:Java equivalent of python's String lstrip()?Java 等效于 python 的 String lstrip()?
【发布时间】:2010-06-23 09:05:27
【问题描述】:

我想删除字符串中的前导空格,但不删除尾随空格 - 所以 trim() 不起作用。在 python 中我使用 lstrip(),但我不确定 Java 中是否有等价物。

举个例子

"    foobar    "

应该变成

"foobar    "

如果可能的话,我也想避免使用正则表达式。

Java 中有内置函数,还是我必须创建自己的方法才能做到这一点? (以及我可以实现的最短方法是什么)

【问题讨论】:

  • 请问为什么不用正则表达式?克罗克的回答看起来是做到这一点的最短方法。而且它可读性强,速度快,不需要任何额外的库。
  • @tulskiy 我考虑使用 StringUtils 来完成这项任务,以提高可读性并更好地传达操作的意图。
  • @Christian Semaru:我知道 commons lang 是一个很棒的库,但是因为一个简单的任务而将整个库添加到项目中是一种矫枉过正。
  • @tulskiy:除了你通常最终使用StringUtils 完成多个任务。使用它对我来说是一种默认。

标签: java string trim


【解决方案1】:

您可以使用Apache Commons LangStringUtils 类,它具有stripStart() 方法(以及更多方法)。

【讨论】:

    【解决方案2】:

    您可以在正则表达式中执行此操作:

    "    foobar    ".replaceAll("^\\s+", "");
    

    【讨论】:

    • 当有人说应该避免使用正则表达式时,包含正则表达式的一个答案是如何被接受的,这很有趣。就我个人而言,我也会使用正则表达式而不是库——除了该库已经是项目的一部分。
    【解决方案3】:

    GuavaCharMatcher.WHITESPACE.trimLeadingFrom(string)。这本身与其他实用程序库的同一事物的版本没有什么不同,但是一旦您熟悉了CharMatcher,您就会知道如何以一致的、可读的方式执行广泛的文本处理操作,高性能的方式。

    【讨论】:

      【解决方案4】:

      从 Java11 开始,您可以在字符串上使用 .stripLeading() 删除前导空格,使用 .stripTrailing() 删除尾随空格。

      可在此处找到相关文档:https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/String.html#stripLeading()

      例子:

      String s = "    Hello there.    ";
      s.stripLeading();    // "Hello there.    "
      s.stripTrainling();  // "    Hello there."
      s.strip();           // "Hello there."
      

      【讨论】:

        【解决方案5】:

        【讨论】:

        • Javadocs 说 “其他字符串实用程序方法。主要供框架内部使用;考虑 Jakarta 的 Commons Lang 以获得更全面的字符串实用程序套件。”
        猜你喜欢
        • 2018-08-05
        • 1970-01-01
        • 1970-01-01
        • 2023-03-26
        • 2016-08-04
        • 1970-01-01
        • 2019-01-31
        • 2011-09-02
        • 1970-01-01
        相关资源
        最近更新 更多