gpt4 book ai didi

java - 从文件中读取字符串卡住

转载 作者:行者123 更新时间:2023-12-04 05:00:00 25 4
gpt4 key购买 nike

这个问题不太可能对任何 future 的访客有帮助;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于互联网的全局受众。如需帮助使这个问题更广泛适用,visit the help center .




8年前关闭。




我试图将文本文件中的字符串与用户输入的字符串相匹配。我可以使用带有 if (String.valueOf(str).toLowerCase().contains(u)) 的 while 循环来查找和显示它,
但是说我有一行带有 test ,下一行带有 test3 它将打印两行。我需要它做的是只搜索 test 并打印它所在的行而不打印 test3 。

编辑对不起,我不太擅长描述这一点。问题是这样的:
我有一个使用 StringBuilder() 写入数组的类到这样的文本文件。

[日期和时间] 约翰测试狗

[日期和时间] Mary Test3 Moo

所以我得到用户输入,并说它是测试。我需要让下面的阅读器只搜索文件中的所有行以进行“测试”,然后将其所在的整行发送回去。但是当我用我目前拥有的东西做它时,它会发回“test”和“test3”的行。此外,“test”的位置在字符串中始终相同。

很抱歉这么含糊,我对此还是很陌生。

这是我的读者自动取款机:

Reader reader = new FileReader("EzRegion.txt");
BufferedReader in = new BufferedReader(reader);

while ((str = in.readLine()) != null)
{
if (String.valueOf(str).toLowerCase().contains(u))
{
sender.sendMessage(ChatColor.YELLOW + str);
}
}

最佳答案

你说你有很多元素( token )要匹配。所以你有“bob”、“John”等,我想它们在文件中可以按任何顺序排列,但都应该在同一行。

做个 java.util.StringTokenizer和一个标志以确保所有 token 匹配。在循环中使用 equals 匹配 token

 StringTokenizer st = new StringTokenizer(str);
boolean matchFlag = true;
while (st.hasMoreTokens()) {
String s3 = st.nextToken().toLowerCase();
String match = u.trim().toLowerCase();
if(!u.equals(s3)){
matchFlag = false;
//logger
}

使用
str.toLowerCase().equals(u)

无需调用 String.valueOf,因为您已经有了一个字符串。还有你的小写,所以如果你是小写并且 str 是“Test”或“TEST”,那么 test 和 Test 将匹配......

使用
str.equals(u)

匹配区分大小写。

如果你想删除空格然后使用修剪
str.trim()


str.trim().toLowerCase()

请注意,如果您要多次使用修剪过的或小写的字符串,最好将值分配给新变量并使用新变量。

喜欢
String sTrmed = str.trim();
if(sTrmed.equals(u)) { //....

关于java - 从文件中读取字符串卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16258532/

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