Java如何检测字符串中的空格并在存在空格时给出错误提示?
Java 检测字符串含空格的简便实现及代码修正
简便实现方案
针对检测字符串是否包含空格的需求,优先推荐以下两种低门槛、不易出错的写法,不需要写复杂逻辑:
- 最推荐使用
String类自带的contains()方法:直接判断字符串变量.contains(" ")即可,返回true就代表存在空格,写法直观不需要记额外规则,性能优于正则匹配,非常适合新手使用。 - 你之前尝试过的
indexOf()方法本身也是可行的:只要判断字符串变量.indexOf(' ') != -1,返回值不等于-1就说明找到了空格位置,即字符串包含空格。 - 如果需要同时检测制表符、全角空格、换行符等所有空白字符,再使用正则匹配即可。
原有代码的问题
你写的代码存在3个容易导致功能失效的问题:
- 输入读取方法用错了:
input.next()默认会以空格作为分隔符截断输入,也就是说用户输入带空格的内容时,next()只会读取第一个空格之前的部分,你根本拿不到完整的带空格字符串,这大概率是你之前试了indexOf等方案没生效的核心原因,要读取用户输入的整行内容需要用input.nextLine()。 - 正则转义写法错误:Java字符串中编写正则时,反斜杠需要做双重转义,匹配空白符的
\s在Java字符串里必须写成\\s,单写\s不符合Java语法规则,代码会直接编译报错。 - 代码缩进不规范,
if块内的逻辑没有统一缩进,可读性差;直接调用System.exit(0)终止程序的逻辑比较生硬,实际开发中通常会搭配循环让用户重新输入,而不是直接退出程序。
修正后的参考代码
import javax.swing.JOptionPane; import java.util.Scanner; public class GuessNumberInput { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入你猜测的数字,提交内容请勿包含空格"); // 读取整行输入,避免被空格截断 String guess = input.nextLine(); // 用最简便的contains方法判断是否存在空格 if (guess.contains(" ")) { JOptionPane.showMessageDialog(null, "输入有误,请不要在字符之间输入空格后重试"); System.exit(0); } // 后续猜数字的业务逻辑可写在此处 System.out.println("你输入的有效猜测为:" + guess); } }
补充说明:如果需要匹配所有类型的空白字符(包括制表符、全角空格、换行符等),可以把判断条件替换为
guess.matches(".*\\s.*"),注意不要漏写反斜杠的双重转义。
内容的提问来源于stack exchange,提问作者DJ Arkaiid
相关产品推荐
相关产品推荐

