Java 如何删除前导空格?

How can Java remove leading whitespace?

我一直在试图弄清楚为什么这个 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"));
    }

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

可能的解决方案

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

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

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