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