【发布时间】:2012-10-05 21:56:24
【问题描述】:
如何在 Java 中从字符串的开头删除空格而不从末尾删除?
如果值为:
String temp = " hi "
那么我怎样才能只删除前导空白,使其看起来像这样:
String temp = "hi "
我目前的实现是循环遍历,检查第一个字符并创建一个子字符串,直到达到第一个非空白值。
谢谢!
【问题讨论】:
标签: java whitespace trim
如何在 Java 中从字符串的开头删除空格而不从末尾删除?
如果值为:
String temp = " hi "
那么我怎样才能只删除前导空白,使其看起来像这样:
String temp = "hi "
我目前的实现是循环遍历,检查第一个字符并创建一个子字符串,直到达到第一个非空白值。
谢谢!
【问题讨论】:
标签: java whitespace trim
你可以使用:
temp = temp.replaceFirst("^\\s*", "")
【讨论】:
temp.replaceFirst("^\\s*", "");,以便^ 匹配字符串的开头。
^ 仅在使用String.replaceAll 时才需要。虽然在这里可以正常工作,但String.replaceFirst 不需要它
您可以使用 Commons-lang StringUtils stripStart 方法。
如果你传递 null 它会自动修剪空格。
StringUtils.stripStart(temp, null);
【讨论】:
截至JDK11,您可以使用stripLeading:
String result = temp.stripLeading();
【讨论】:
可能接近建议的 Commons-lang StringUtils.stripStart() 方法的实现:
public static String trimFront(String input) {
if (input == null) return input;
for (int i = 0; i < input.length(); i++) {
if (!Character.isWhitespace(input.charAt(i)))
return input.substring(i);
}
return "";
}
【讨论】:
公然抄自java2s:
text = text.replaceAll("^\\s+", "");
...并使用@Reimus的答案修改:
text = text.replaceFirst("^\\s+", "");
我不确定最有效的方法; fwiw,我选择了 @Reimus 的原版。
【讨论】: