Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java字符串参数第一个/最后一个参数_Java_String_Char - Fatal编程技术网

Java字符串参数第一个/最后一个参数

Java字符串参数第一个/最后一个参数,java,string,char,Java,String,Char,我正在学习,无法找到以下任务的解决方案: 这就是任务: 编写一个函数,获取作为字符串参数传递的任务。我们只限于在文本中搜索。每个任务的结构如下: <TASK> <WHAT> <TEXT> 暗示 如果按Run,您将看到所有System.out.println的控制台输出 private static final Pattern=Pattern.compile(“FIND\\s+(?FIRST | LAST)\\s+(?CHAR | WORD)\\s+(?\

我正在学习,无法找到以下任务的解决方案:

这就是任务:

编写一个函数,获取作为字符串参数传递的任务。我们只限于在文本中搜索。每个任务的结构如下:

 <TASK> <WHAT> <TEXT>
暗示

  • 如果按Run,您将看到所有System.out.println的控制台输出
  • private static final Pattern=Pattern.compile(“FIND\\s+(?FIRST | LAST)\\s+(?CHAR | WORD)\\s+(?\\s+)\\s+(?。+)”;
    公共静态整型查找(字符串str){
    Matcher-Matcher=PATTERN.Matcher(str);
    如果(!matcher.matches())
    返回-1;
    字符串pos=matcher.group(“pos”);
    字符串单位=matcher.group(“单位”);
    String what=matcher.group(“what”);
    String text=matcher.group(“text”);
    布尔值first=“first”。等于(pos);
    如果(“字符”。等于(单位))
    首先返回?text.indexOf(what):text.lastIndexOf(what);
    如果(“字”。等于(单位)){
    Matcher match=Pattern.compile(“\\b”+what+“\\b”).Matcher(文本);
    int offs=-1;
    while(match.find()){
    offs=match.start();
    如果(第一)
    打破
    }
    退货;
    }
    返回-1;
    }
    
    为什么第二个示例输出-1?那里有一个
    a
    。为什么第一个示例输出0?那里没有
    D
    。到目前为止你试了什么?
     <TASK> = "FIND (FIRST | LAST) (CHAR | WORD)"
    
     "FIND FIRST CHAR D This is a text" → Output: "0"
     "FIND FIRST CHAR a This is a text" → Output: "-1"
     "FIND FIRST CHAR s This is a text" → Output: "3"
     "FIND LAST CHAR t This is a text" → Output: "16"
     "FIND FIRST WORD is This is a text" → Edition: "5"
     "FIND LAST WORD is This is a text" → Output: "5"
    
    private static final Pattern PATTERN = Pattern.compile("FIND\\s+(?<pos>FIRST|LAST)\\s+(?<unit>CHAR|WORD)\\s+(?<what>\\S+)\\s+(?<text>.+)");
    
    public static int find(String str) {
        Matcher matcher = PATTERN.matcher(str);
    
        if (!matcher.matches())
            return -1;
    
        String pos = matcher.group("pos");
        String unit = matcher.group("unit");
        String what = matcher.group("what");
        String text = matcher.group("text");
        boolean first = "FIRST".equals(pos);
    
        if ("CHAR".equals(unit))
            return first ? text.indexOf(what) : text.lastIndexOf(what);
    
        if ("WORD".equals(unit)) {
            Matcher match = Pattern.compile("\\b" + what + "\\b").matcher(text);
            int offs = -1;
    
            while (match.find()) {
                offs = match.start();
    
                if (first)
                    break;
            }
    
            return offs;
        }
    
        return -1;
    }