检查文本文件中包含与用户输入字母相同的单词的单词

时间:2019-05-25 21:51:44

标签: java

我有一个文本文件中的位置列表。这些位置中的每个位置都有一个选中字符。示例AAAA = ALPHA,AAA1 = BRAVO,AAAC = DELTA,AAA2 =印度。 AAAA,AAA1,AAAC和AAA2是位置字符串。我有一个160万个带有校验字符的位置列表。这些位置由26个字母A-Z和0-9组成。

程序的第一部分返回所有与位置相同的校验字符。示例:用户输入位置ABCD,该位置的校验字符为-ALPHA。显示带有复选字符-ALPHA的所有位置。

程序的第二部分,我想找到与用户输入的字母或数字匹配的所有位置。示例用户输入带有校验字符ALPHA的10AZ。该程序将遍历文本文件,并找到所有以ALPHA结尾并且名称中包含0、1,A或Z的位置。

我尝试过使用正则表达式分割字符串,然后使用包含,但是并没有实现我想要的功能。答案可能很简单,但我似乎无法弄清楚,我也看过其他问题,但没有找到我想要的东西。

我编写的代码很杂乱,但是我现在正试图获得一个可行的解决方案。关于运行时间的任何建议都值得赞赏。

我尝试使用一种字谜方法,并试图使其对我有用,但我只是弄乱了代码。我还尝试过将字符串存储在数组中,并遍历数组的每个索引,但结果不正确。

    // The name of the file to open.
    String fileName = "Sn.txt";
    // User input for the location
    String UserInput = "10AZ";
    String CheckCharacter;

    //RC method finds the check character for the location 
    CheckCharacter = Check2.RC(UserInput);

    //getPhonetic gives back the phonetic associated with check character
    String NewCC = Check2.getPhonetic(CheckCharacter); 

    String line = null;
    try {
        FileReader fileReader = 
        new FileReader(fileName);
        // Always wrap FileReader in BufferedReader.
        BufferedReader bufferedReader = 
        new BufferedReader(fileReader);
        int count =0;
        while((line = bufferedReader.readLine()) != null) {
            if(line.endsWith(NewCC)) {
                count++;
                System.out.println(line);
             //System.out.println(isAnagram(UserInput, line) + "USER INPUT");
            }
            //System.out.println(line);
        }   
        System.out.println(count);
        bufferedReader.close();         
    }
    catch(FileNotFoundException ex) {
        System.out.println("Unable to open file '" + fileName + "'");                
    }   

我想要这样的结果: 用户输入以Delta结尾的位置10AZ。 1.显示以Delta结尾的所有位置-我已经在工作。 2.所有以Delta结尾并以1,0,A和Z开头的位置。 3.所有以Delta结尾并包含1,0,A和Z的位置。

任何建议都值得赞赏,不需要任何代码,只需向正确的方向轻推即可。

1 个答案:

答案 0 :(得分:0)

这里有一些我不能发表评论的提示:

  

所有以Delta结尾并以1,0,A和Z开头的位置

为此,您可以使用正则表达式,如下所示:

String input;
// fill input string
input.matches("^[1OAZ]$");

您可以将1OAZ替换为基本说的任何字符串,或者替换为1或O或A或Z。

  

所有以Delta结尾并包含1,0,A和Z的位置。

您可以按照您所说的使用包含

String input;
 // fill input string
 if(input.contains("1") || input.contains("O") ...){
 // do something

在这种情况下,可以从字符串“ 1OAZ”中检索所有字符,可以使用toCharArray函数并遍历字符,也可以使用split:

char[] chars = string.toCharArray();
String[] strChars = string.split("");
// iterate over chars
for(...) {
if(input.contains(singleCharHere)
 // do something

当然,使用regex可以实现相同的结果,但是在这种情况下它更复杂。希望这会有所帮助。