gpt4 book ai didi

java - 如果包含任何非字母数字字符则拒绝字符串

转载 作者:行者123 更新时间:2023-12-01 20:04:15 24 4
gpt4 key购买 nike

我正在编写一个程序,并且希望该程序在搜索模式(单词)包含任何非字母数字字符时不要循环并请求另一个搜索模式。

我已将一个 boolean 词设置为 false,并设置一个 if 语句,以便在该词包含字母或数字时将 boolean 值更改为 true。然后是另一个 if 语句,允许程序在 boolean 值为 true 时执行。

我的逻辑一定是关闭的,因为如果我只是输入“/”,它仍然通过搜索模式执行。搜索模式不能包含任何非字母数字字符(包括空格)。我正在尝试使用正则表达式来解决这个问题。

有问题的输出示例:

Please enter a search pattern: /
Line number 1
this.a 2test/austin
^

Line number 8
ra charity Charityis 4 times a day/a.a-A
^

这是我适用的代码:

while (again) {

boolean found = false;
System.out.printf("%n%s", "Please enter a search pattern: ", "%n");
String wordToSearch = input.next();

if (wordToSearch.equals("EINPUT")) {
System.out.printf("%s", "Bye!");
System.exit(0);
}

Pattern p = Pattern.compile("\\W*");
Matcher m = p.matcher(wordToSearch);

if (m.find())
found = true;

String data;
int lineCount = 1;

if (found = true) {
try (FileInputStream fis =
new FileInputStream(this.inputPath.getPath())) {
File file1 = this.inputPath;
byte[] buffer2 = new byte[fis.available()];
fis.read(buffer2);
data = new String(buffer2);
Scanner in = new Scanner(data).useDelimiter("\\\\|[^a-zA-z0-9]+");
while (in.hasNextLine()) {

String line = in.nextLine();

Pattern pattern = Pattern.compile("\\b" + wordToSearch + "\\b");
Matcher matcher = pattern.matcher(line);

if (matcher.find()) {
System.out.println("Line number " + lineCount);
String stringToFile = f.findWords(line, wordToSearch);
System.out.println();
}
lineCount++;
}
}
}
}

最佳答案

停止重复发明轮子。

阅读此内容:Apache StringUtils ,关注isAlpha是字母数字,和isAlphanumericSpace

其中之一可能会提供您想要的功能。

关于java - 如果包含任何非字母数字字符则拒绝字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47640992/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com