如何检查输入字符串是否包含任何空格?

时间:2012-07-15 00:34:27

标签: java regex

我有一个输入对话框,询问XML元素名称,我想检查它是否有任何空格。

我可以做一些像name.matches()吗?

10 个答案:

答案 0 :(得分:43)

为什么要使用正则表达式?

name.contains(" ")

这应该同样有效,并且更快。

答案 1 :(得分:6)

如果您将使用正则表达式,它已经有一个预定义的字符类" \ S"对于任何非空白字符。

!str.matches("\\S+")

告诉您这是否是至少一个字符的字符串,其中所有字符都是非空格

答案 2 :(得分:5)

一个简单的答案,与之前的答案类似:

str.matches(".*\\s.*")
  • 第一个“。*”表示空格前面可以有零个或多个任何字符的实例。
  • “ \\ s”表示必须包含任何空格字符。
  • 最后一个“。*”表示空格后​​的任何字符都可以有零个或多个实例。

将所有这些内容放在一起时,如果字符串中任意位置有一个或多个空格字符,则返回true。

这是一个简单的测试,您可以运行该测试以测试解决方案的依据:

boolean containsWhitespace(String str){
    return str.matches(".*\\s.*");
}

String[] testStrings = {"test", " test", "te st", "test ", "te   st", 
                        " t e s t ", " ", "", "\ttest"};
for (String eachString : testStrings) {
        System.out.println( "Does \"" + eachString + "\" contain whitespace? " + 
                             containsWhitespace(eachString));
}

答案 3 :(得分:4)

string name = "Paul Creasey";
if (name.contains(" ")) {

}

答案 4 :(得分:2)

如果你真的想要一个正则表达式,你可以使用这个:

str.matches(".*([ \t]).*")

从某种意义上说,与此正则表达式匹配的所有内容都不是有效的xml标记名称:

if(str.matches(".*([ \t]).*")) 
      print "the input string is not valid"

答案 5 :(得分:2)

if (str.indexOf(' ') >= 0)

会(稍微)加快。

答案 6 :(得分:0)

这已在android 7.0以及android 10.0中进行了测试,并且可以正常工作

使用以下代码检查字符串是否包含空格,空格是否位于第一个位置,中间位置或最后一个位置:

 name = firstname.getText().toString(); //name is the variable that holds the string value

 Pattern space = Pattern.compile("\\s+");
 Matcher matcherSpace = space.matcher(name);
 boolean containsSpace = matcherSpace.find();

 if(constainsSpace == true){
  //string contains space
 }
 else{
  //string does not contain any space
 }

答案 7 :(得分:0)

您可以使用此代码检查输入字符串是否包含空格?

public static void main(String[]args)
{
    Scanner sc=new Scanner(System.in);
    System.out.println("enter the string...");
    String s1=sc.nextLine();
    int l=s1.length();
    int count=0;
    for(int i=0;i<l;i++)
    {
        char c=s1.charAt(i);
        if(c==' ')
        {
        System.out.println("spaces are in the position of "+i);
        System.out.println(count++);
        }
        else
        {
        System.out.println("no spaces are there");
    }
}

答案 8 :(得分:0)

要检查字符串是否不包含空格,可以使用

string.matches("^\\S*$")

示例:

"name"        -> true
"  "          -> false
"name xxname" -> false

答案 9 :(得分:0)

您可以使用正则表达式“\\s”

计算空格数的示例程序(Java 9 及更高版本)

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
  public static void main(String[] args) {

    Pattern pattern = Pattern.compile("\\s", Pattern.CASE_INSENSITIVE);        
    Matcher matcher = pattern.matcher("stackoverflow is a good place to get all my answers");        

    long matchCount = matcher.results().count();   
 
    if(matchCount > 0) 
      System.out.println("Match found " + matchCount + " times.");           
    else 
      System.out.println("Match not found");        
  }
}

对于 Java 8 及更低版本,您可以在 while 循环中使用 matcher.find() 并增加计数。例如,

int count = 0;
while (matcher.find()) {
  count ++;
}