检查字符串是否只是字母+空格?

我想编写一个传递字符串的静态方法,并检查该字符串是否仅由字母和空格组成。 我可以根据需要使用String的方法length()和charAt(i)。

我想的是以下内容:(对于伪代码抱歉)

public static boolean onlyLettersSpaces(String s){ for(i=0;i<s.length();i++){ if (s.charAt(i) != a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) { return false; break; }else { return true; } } 

我知道我的编码可能有错误,并且可能有更简单的方法,但请告诉我你的建议!

使用正则表达式。 如果它仅以字母和空格开头,包含和结尾,则仅匹配。

 ^[ A-Za-z]+$ 

在Java中,将其初始化为模式并检查它是否与您的字符串匹配。

 Pattern p = Pattern.compile("^[ A-Za-z]+$"); Matcher m = p.matcher("aaaaab"); boolean b = m.matches(); 

这不是你如何测试角色平等,一个简单的解决方案

 public static boolean onlyLettersSpaces(String s){ for(i=0;i 

对于你提到的约束(只使用length()和charAt()),你得到的几乎是正确的。

你会循环遍历每个角色并检查它是否是可接受的角色之一 – 这是正确的方式。 如果你发现一个不可接受的角色,你会立即返回“假”,这也很好。 怎么说错了 ,如果你决定接受这个角色,你就会回归真实。 但是定义说只有在所有字符被接受时才返回true。 你需要将“return true”移动到循环之后(这就是你知道所有字符都被接受的点)

所以你将你的伪代码改为:

 for (all characters in string) { if (character is bad) { // one bad character means reject the string, we're done. return false; } } // we now know all chars are good return true;