我目前正在温习我的编码技能并解决我在网上发现的一些简单问题。具体任务是输入一个包含任意行数的 txt 文件,并让程序检查每一行并根据该行是否包含字母表的所有 26 个字母返回“True”或“False”。我觉得我快完成了,但是无论我做什么,将字符串与 [a-z] 匹配的正则表达式都会返回 false。我尝试将字符串更改为小写,删除空格,但似乎没有任何效果。
Here's a link to the project as well.
我的文本文件中当前的文本是“敏捷的棕色狐狸跳过了懒狗。”
package easy139;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class easy139 {
public static void main(String[] args) {
try {
Scanner in = new Scanner(new FileReader("input.txt"));
while (in.hasNextLine()) {
String line = in.nextLine();
System.out.println(line);
String noSpaces = line.replaceAll(" ","");
if (noSpaces.matches("[a-z]")) {
System.out.println("True");
}
else {
System.out.println("False");
}
}
in.close();
} catch (IOException e) {
}
}
}
最佳答案
您的测试返回 false,因为正则表达式 [a-z]
表示“恰好是一个字母”。
与String.matches()
一起使用的正则表达式是:
(?i)(?=.*a)(?=.*b)(?=.*c)...(?=.*z).*
这对每个字母使用一次展望,每个字母都断言该字母存在。 (?i)
开关打开不区分大小写。
关于java - 正则表达式检查字母表中的所有字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23110334/