【问题标题】:How can Java remove leading whitespace?Java如何删除前导空格?
【发布时间】:2022-02-06 09:24:52
【问题描述】:

我一直试图弄清楚为什么这个 Java 代码不会删除任何前导空格到我的实际字符串,我一直在尝试使用 stripLeading() 方法和 trim();方法,以及其他各种具有相同功能但仍未获得良好结果的方法。代码:

public static String message(String logLine) {
         logLine = (String) logLine.subSequence(logLine.indexOf(" ") + 1, logLine.length());
         return logLine;
         }
public static void main(String[] args) {
        
        System.out.println(message("[WARNING]:   \tTimezone not set  \r\n"));
    }

结果是我想要的,只是“未设置时区”这句话,但是我希望这个程序完全忽略前导空格,由于某种原因它不能。感谢您的帮助。

【问题讨论】:

  • 如果前面有文字,则不是前导空格。
  • 在几个字符串上尝试.indexOf(" "),也许是" x""x y""x ",然后想想结果。
  • 可能是string.substring(string.indexOf(" ")).trim()(或... .stripLeading() [Java 11+])
  • logLine = logLine.split("\\s+",2)[1].trim();

标签: java string removing-whitespace


【解决方案1】:

可能的解决方案

  • 使用String::replaceFirst 仅保留前缀 ([WARNING]:) 后面的部分,后跟空格和主要部分:

    public static String message(String logLine) {
        return logLine.replaceFirst("^\\S*\\s+(\\S+(\\s+\\S+)*)\\s+$", "$1");
    }
    
  • 由于前缀以':' 结尾,因此评论中提供的使用String::substring + String::trim 的解决方案也可以:

    public static String message(String logLine) {
        return logLine.substring(logLine.indexOf(":") + 1).trim();
    }
    

【讨论】:

    猜你喜欢
    • 2014-11-12
    • 2022-01-01
    • 2010-10-31
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多