数组和文件内容之间的匹配,而不使用正则表达式

时间:2013-04-06 18:44:21

标签: java string multidimensional-array

请在不使用正则表达式的情况下在数组和文件内容之间进行匹配。

请重播 : -

如果我有一个txt文件包含这句话:

the sql is the best book for jon.
book sql is the best title for jon.
the html for  author asr.
book java for famous writer amr.

如果我将这个字符串存储在数组中;

sql     html    java
jon     asr     amr  

我想在文件中搜索数组的内容,例如,如果" sql"和"乔恩"在txt文件的同一个句子中然后写下句子和

在" sql"之前写下所有单词命名为前缀,以及两个" sql"之间的所有单词和"乔恩"并将其命名为 middle ,将所有单词命名为" jon"命名为后缀

我试着写鳕鱼:

String book[][]  = {{"sql","html","java"},{"jon","asr","amr"}};


    String input;
    try {
        BufferedReader br = new BufferedReader(new FileReader(new File("sample.txt") ));
        input= br.readLine();
        while ((input)!= null)
            {
            if((book[0][0].contains(input))&( book[1][0]).contains(input)){
                System.out.println();
             if((book[0][1].contains(input))&( book[1][1]).contains(input)){
                        System.out.println();
                     if((book[0][2].contains(input))&( book[1][2]).contains(input)){
                        System.out.println();
                                    }
                        else
                            System.out.println("not match");
        }}
    }} catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();

    }

我不知道如何编写代码来提取前缀,中间和后缀

输出是:

the sentence is : the sql is the best book for jon.
prefix is :the
middle is:is the best book for
suffix is: null

依旧......

2 个答案:

答案 0 :(得分:0)

你应该使用Pattern类。 http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

教程http://docs.oracle.com/javase/tutorial/essential/regex/

抱歉,我不会写出确切的代码。

模式看起来像

"(.*)(?:sql|html|java)(.*)(?:jon|asr|amr)(.*)"

然后,在Matcher中,您将找到前缀,中间和后缀为matcher.group(1),matcher.group(2)和matcher.group(3)。

答案 1 :(得分:0)

以下是您需要的代码:

    String line = "the sql is the best book for jon.";

    String regex = "(.*)(sql|html|java)(.*)(jon|asr|amr)(.*)";
    Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);

    Matcher matcher = pattern.matcher(line);
    matcher.find();

    String prefix = matcher.group(1);
    String firstMatch = matcher.group(2);
    String middle = matcher.group(3);
    String secondMatch = matcher.group(4);
    String suffix = matcher.group(5);