Java 降价算法:#后跟enter的序列应不返回任何内容

Java 降价算法:#后跟enter的序列应不返回任何内容,java,markdown,Java,Markdown,现在我有了这个方法: public static String convert(String str) { if (str.equals("# ")) System.out.println(" "); Pattern pattern = Pattern.compile("(#+[^#]+)"); Matcher matcher = pattern.matcher(str); while (matcher.find()) { String str1 = matcher

现在我有了这个方法:

public static String convert(String str) {

    if (str.equals("# "))
    System.out.println(" ");

Pattern pattern = Pattern.compile("(#+[^#]+)");
Matcher matcher = pattern.matcher(str);

while (matcher.find()) {
    String str1 = matcher.group(1);
    int n = str1.length() - str1.replaceFirst("#+", "").length();
System.out.println("<h" + n + ">" + str1.substring(n) + "</h" + n + ">");
}

return ("");
}    
公共静态字符串转换(字符串str){
if(str.equals(“#”)
System.out.println(“”);
Pattern=Pattern.compile(“(#+[^#]+)”;
Matcher-Matcher=pattern.Matcher(str);
while(matcher.find()){
字符串str1=matcher.group(1);
int n=str1.length()-str1.replaceFirst(“#+”,“”)。length();
System.out.println(“+str1.substring(n)+”);
}
返回(“”);
}    

当我输入#####世界报#时,它会给我

世界报

。我希望它忽略“世界报”之后的内容。基本上,我希望算法忽略一系列#,后跟空格或返回键。我做错了什么?

在获得下一个匹配项(str1)后再添加一行,以便:


这将忽略任何空格匹配。

为什么您希望它的行为会有所不同?除非整个字符串是“#”,否则每次运行的哈希都将被while循环中的标记所取代。在我阅读了您所有的标记问题之后:我认为使用f.ex之类的框架会更容易。的源代码(使用Parboiled解析标记文本)易于阅读和扩展。修复了它,因此现在它在匹配后进行检查
String str1 = matcher.group(1);
if(str1.replaceFirst("#+", "").length() == 0 || str1.replaceFirst("#+", "").matches("[\\s]+")) continue;