gpt4 book ai didi

java - 使用正则表达式设置 boolean 值?

转载 作者:行者123 更新时间:2023-12-01 11:56:10 24 4
gpt4 key购买 nike

我正在使用 BufferedReader 逐行读取文本文件。我有一系列三个正则表达式来测试每行的数字、大写字母和特殊字符。

如果其中任何一个匹配,我将 boolean 值设置为true。我想稍后使用这些 boolean 值向用户输出一条消息,告诉他们“扫描”的结果。

但是,当我开始使用 boolean 值时,尽管我在测试文本文件中添加了数字、大写字母等,但它们仍然全部设置为 false。

如果文本文件中的一行是abC 6,那么numBoolcapBool应该返回true,但不是specialBool

import java.io.*;
import java.util.*;
import java.lang.*;
import java.awt.*;

class ReadFile implements Runnable
{
public void run()
{
String line;
Boolean capBool = false;
Boolean numBool = false;
Boolean specialBool = false;

try
{
/* ------------- Get Filename ------------- */
System.out.print("Enter file to scan : ");
BufferedReader fileGet = new BufferedReader(new InputStreamReader(System.in));
String file_name = fileGet.readLine();
fileGet.close();

/* ---------------- Open File ---------- */
BufferedReader br = new BufferedReader(new FileReader(file_name));

/* --------------- Scan file line by line ----------- */
while((line = br.readLine()) != null)
{
if(line.matches("[A-Z]"))
capBool = true;
if(line.matches("[0-9]"))
numBool = true;
if(line.matches("[$&+,:;=?@#|]"))
specialBool = true;

System.out.println(line);
}

br.close(); // close reader

DisplayResults display = new DisplayResults();
String findings = display.displayFindings(capBool, numBool, specialBool);

System.out.print(findings);
}
catch(IOException ex)
{
System.out.println(ex.getMessage() + " - Please check log file for more details");
ex.printStackTrace();
}

}

public static void main(String[] args) throws FileNotFoundException
{
System.setErr(new PrintStream(new FileOutputStream("Exceptions.txt")));
Runnable r = new ReadFile();
Thread th = new Thread(r);
th.start();
}
}

这是因为当我退出 while 循环时 boolean 值被以某种方式覆盖吗?或者由于正则表达式方法错误,它们永远不会被设置为 true?

最佳答案

matches 的意思就是它看起来的样子 - 检查整个字符串是否与您的正则表达式匹配。然而,从您编写这些正则表达式的方式来看,这很可能不是您想要的 - 您似乎正在寻找一种正则表达式 contains

然而,可悲的是,没有其他漂亮的语法可以做你想做的事 - 请参阅 How to use regex in String.contains() method in Java 。您需要重写您的正则表达式。

这应该没那么难。只需用 .* 包围您准备好的表达式,以表明您要查找的内容前面或后面可以是任意数量的字符 - 即 [A-Z] 可以更改为.*[A-Z].*

关于java - 使用正则表达式设置 boolean 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28432177/

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