当前位置: 首页 > 知识库问答 >
问题:

编写一个程序loadDocument(字符串名),它将在每行中搜索链接后加载和分析行

茹正初
2023-03-14

编写一个过程loadDocument(String name),它将在每行搜索链接后加载并分析行。链接格式如下:5个字符link=(可以是大写和小写混合字母),之后是正确的标识符。正确的标识符从字母(小写或大写)开始,后跟零个或多个字母、数字或下划线uuu。程序必须打印后续标识符,每一个都在单独的行中。在打印之前,必须将标识符更改为小写字母。文档以带有文本eod的行结尾,这意味着文档结束。

我的代码:

public static void loadDocument(String name, Scanner scan) {
    while(scan.hasNext()) {
        String line = scan.nextLine();
        if(line.equals("eod")) {
            return;
        }
        else if(line.matches("link="+name) && correctLink(name)) {
            String identifier = name.toLowerCase();
            System.out.println(identifier);
        }
        else
            continue;
    }            
}

// accepted only small letters, capital letter, digits and '_' (but not on the begin)
public static boolean correctLink(String link) {
    if(link.matches("^[a-zA-Z]+[0]+||[0-9]+||_"))
        return true;
    else
        return false;
}

如何写如果行等于link=,返回link=之后的任何内容?我的问题在这个代码中:

else if(line.matches("link="+name) && correctLink(name)) {
    String identifier = name.toLowerCase();
    System.out.println(identifier);
}

例如,如果输入是link=abc,我希望它打印abc

共有1个答案

司知
2023-03-14

下面是一个例子来解释这一切:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Example {
    public static void main(String[] args) {
        final String regex = "link=(.*)";
        final String string = "link=sdfgubvcyx";
        
        final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
        final Matcher matcher = pattern.matcher(string);
        
        while (matcher.find()) {
            System.out.println("Full match: " + matcher.group(0));
            
            for (int i = 1; i <= matcher.groupCount(); i++) {
                System.out.println("Group " + i + ": " + matcher.group(i));
            }
        }
    }
}

regex——文本链接=,后面是由任意字符组合(任意字符甚至空格等)组成的组
字符串-只是我的测试字符串
模式——编译后的正则表达式
matcher——我的测试字符串的已编译正则表达式中的匹配器
匹配器。组(0)——完全匹配
匹配器。组(1)-第一组的匹配项(这是您正在寻找的)
你可以用两行文字来表达,但我认为这更清楚了:)

 类似资料:
  • 我试图创建一个java程序,它可以读取一个名为file1.txt的文件,存储它的字符串,并将这些字符串搜索到另一个名为file2.txt的文件,如果没有找到匹配,则从file1.txt打印特定的字符串。 现在我可以从file1.txt获得数据,但无法搜索file1的数据,例如在file2.txt中搜索单词“home” 请看这里的file1.txt包含Homee,而file2.txt有Home,所以

  • 问题内容: 我已经开始使用LPTHW学习Python,并且开始练习16: http://learnpythonthehardway.org/book/ex16.html 并且觉得自己是个白痴,因为我无法弄清楚看似简单的“额外功劳”分配之一,但需要以下条件: 压缩为一行代码。我尝试了以下一些方法: 要么: 要么: 我只是无法让它在同一行中重写line1,line2和line3字符串。而且,我尝试了各

  • 我必须定义一个包含大写方法的Translator类。该方法将收到一个StringBuffer,它只包含英文字母和空格,并将更改它,以便每个单词都以大写字母开头。 //我需要定义的类

  • 问题内容: 我正在尝试编写一个angularjs自定义过滤器,以检查国家/地区数组是否包含用户输入的搜索字符串。 该字符串可以包含一个字母(例如“ E”)或n个字母的片段(例如“ lan”)或整个单词(例如“ England”)。 在每种情况下,都应返回包含该字母或该片段的所有国家,因此“ E”将返回“ England”,“爱沙尼亚”等,而“ lan”将返回“ England”,“ Ireland

  • 问题内容: 如何以 不区分大小写的 方式在文件中搜索单词? 例如 如果我正在文件中搜索,如果文件包含更新,则搜索应将其选中并将其视为匹配项。 问题答案: 可以在忽略大小写的情况下检查两个字符串是否相等。它甚至可以与Unicode一起使用。有关更多信息,请参见http://golang.org/pkg/strings/#EqualFold。 http://play.golang.org/p/KDdI