如何检查字符串开头的空格?

3

如何检查字符串开头的空格。


2
你所说的“check”具体是什么意思? - Bohemian
5个回答

11

如果您想检查任何空格(不仅是空格字符,还包括制表符、换行符等),您可以使用myString.matches("^\\s+.*") - Ted Hopp
1
@arnaud,这只是检查空格而不是“空白字符”。 trim()会删除\0 之间的字符,其中包括一些不是空白字符的字符,并且会错过一些是空白字符的字符。 - Peter Lawrey
@arnaud - 我认为你需要在匹配正则表达式的末尾添加 ".*";否则它只会匹配完全为空格的字符串。 - Ted Hopp

6
检查第一个字符是否为空格:
Character.isWhitespace(myString.charAt(0))

或者使用正则表达式:

myString.matches("^\\s+.*")
编辑: 不要忘记首先检查null或零长度的字符串:
if (myString != null && myString.length() > 0) {
  ....  
}

1
如果 String myString = ""; 是在你的代码行之前会发生什么? - Bohemian
@Bohemium:我假设进行了诸如null或零长度之类的合理性检查;我认为OP足够聪明,会进行这些检查。我已更新我的答案。 - Richard H

1
String str=" hi";
    if(str.startsWith(""))
    {
        System.out.println("Space available");
    }else{
        System.out.println("NO Space available");
    }

你也可以通过不同的方式来实现它。有多种方法可用于实现此目标。


问题是:空格,而不是空间' ')。这是有区别的。空格是一个字符类,包括例如\n - Andreas Dolk

1

只是再加上一个...

public static boolean isStartingWithWhitespace(String str) {
   if (str == null || str.isEmpty())
      return false;

   return str.substring(0,1).trim().isEmpty();
}

解释: trim 会删除字符串前后的空格。如果字符串存在且不为空,则我们从第一个字符创建一个新字符串并对其进行修剪。现在,如果结果为空,则原始字符串确实以空格开头,我们返回 true。否则,答案是“false”。

注意 - 这个解决方案无法与 Richard H's 相竞争,后者更加优雅 ;)


-1

很简单,只需要查看http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#trim()

trim() 方法通过检查 Unicode 值 '\u0020'(空格值)来修剪字符串开头和结尾的空格(在 Unicode 中最小值是 '\u0020'= 空格) 所以它从开头开始检查每个索引,直到获得大于空格 Unicode 的值,并且从末尾开始检查,直到获得大于空格的值并修剪开头和结尾。最后返回没有起始和结尾空格的子字符串。


String str=" hi ji "; str = str.trim();
System.out.println(str);
- prasad

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