基于Java行中的单词比较文本行

基于Java行中的单词比较文本行,java,string,Java,String,我需要从用户提示的文件中读取文本行。我的java程序应该读取该文件的第一行,并检查该行的最后一个字是否出现在第二行的任何地方。到目前为止,在不使用重复、数组或类构造的情况下,我提出了以下方法: Scanner keyboard = new Scanner(System.in); System.out.println("Enter filename: "); File userFile = new File(keyboard.nextLine()); keyb

我需要从用户提示的文件中读取文本行。我的java程序应该读取该文件的第一行,并检查该行的最后一个字是否出现在第二行的任何地方。到目前为止,在不使用重复、数组或类构造的情况下,我提出了以下方法:

    Scanner keyboard = new Scanner(System.in);

    System.out.println("Enter filename: ");

    File userFile = new File(keyboard.nextLine());

    keyboard.close();

    Scanner input = new Scanner(userFile);

    String firstLine = input.nextLine();
    String secondLine = input.nextLine();
在这里之后,我尝试了很多字符串方法,但没有任何东西能给我一个满意的结果。我知道我需要用if和else语句来完成我的程序,关于第二行是否包含第一行中的最后一个单词

**很难找到比较子字符串(文本行中的单词)的方法,而我实际上不知道子字符串的位置或字符是什么。这是因为所有输入都是用户生成的。在保留实际字符而不转换为整数的情况下,有没有办法比较子字符串

**更新我欣喜若狂这就是我如何解决这个令人沮丧的问题:

扫描仪键盘=新扫描仪(System.in)


有几种方法可以做到这一点,但您需要获取第一行字符串中的最后一个单词,然后将其与第二行字符串进行比较


您可以在行中使用
substring()
方法,然后使用带有参数“”(即空格)的
lastIndexOf()
方法。如果您向其中添加一个,您将获得字符串中最后一个单词的第一个字母的索引。

我将这样做:

String lastWord = firstLine.replaceAll(".*\\s+", "");
boolean secondLineHasLastWord = secondLine.contains(lastWord);
或者,要将其联机,请执行以下操作:

if (secondLine.contains(firstLine.replaceAll(".*\\s+", ""))) {
    // yes
} else {
    // no
}

提取最后一个单词是使用正则表达式来完成的,该正则表达式匹配最后一个空格字符(包括最后一个空格字符)之前的所有内容,并用零替换匹配项(有效地删除它)。

您尝试过吗?是的,但这里的问题是,我不知道行中包含什么,我只知道我需要确定最后一个单词是否匹配(由空格分隔,技术上可以是带大写字母数字)示例输入:计算机编程是h4Rd econ也是非常h4Rd output:文本中确实出现了haRd这个词:econ也是非常h4Rd。你能发布你的文件内容吗?你的输入和预期的输出?这样我们就可以重现你的代码并更好地帮助你。你能解释一下吗“我需要从用户提示的文件中读取文本行。”?是否要检查每一行(即文件中的任何一行是否包含前一行的最后一个字),或者文件中实际上只有两行?文件中应该只有两行,以使其“更简单”“我认为这里的问题可以归结为这样一个事实:只要我使用了substring()的lastIndexOf或其他任何可能告诉我最后一个单词在哪里的东西,我就会留下一个int,我只想要那个子字符串。显然,如果我知道实际字符串,我只会使用substring,但因为它来自“用户文件”“我实际上对弦一无所知。”波希米亚人的作品说,他或她知道,但似乎作品还有另一个问题:)
if (secondLine.contains(firstLine.replaceAll(".*\\s+", ""))) {
    // yes
} else {
    // no
}