如何从字符串开头删除空格?

9

如何在Java中从字符串开头删除空格而不从结尾删除?

如果值是:

String temp = "    hi    "

那么我如何仅删除前导空格,使其看起来像这样:
String temp = "hi    "

我目前的实现方式是循环遍历,检查第一个字符并创建子字符串,直到达到第一个非空格值。

谢谢!

5个回答

11

你可以使用:

temp = temp.replaceFirst("^\\s*", "")

1
这不适用于已经没有空格的字符串。应该是 temp.replaceFirst("^\\s*", ""); 这样 ^ 就匹配字符串的开头。 - Brian
OP还需要确保字符串以空格字符开头。 - Tim Bender
1
“^”符号只有在使用“String.replaceAll”时才需要。虽然它在这里可以正常工作,但对于“String.replaceFirst”来说并不是必需的。 - Reimeus

9

您可以使用Commons-lang StringUtils stripStart方法。

如果传入null,则会自动修剪空格。

StringUtils.stripStart(temp, null);

6

JDK11 开始,您可以使用 stripLeading 方法:

String result = temp.stripLeading();

1

可能接近于建议的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 "";
}

1
毫不掩饰地复制自java2s
text = text.replaceAll("^\\s+", "");

...并使用@Reimus的答案进行了修改:

text = text.replaceFirst("^\\s+", "");

我不确定最有效的方法; 顺便说一下,我选择了@Reimus的原始方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接