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);
if (str1.replaceFirst("#+", "").length() == 0 || str1.replaceFirst("#+", "").matches("[\\s]+"))
continue;
int n = str1.length() - str1.replaceFirst("#+", "").length();
System.out.println("<h" + n + ">" + str1.substring(n) + "</h" + n + ">");
}
char carac;
carac = str.charAt(0);
if (carac >= 65 && carac <= 90)
{
System.out.println("<p>");
System.out.println(str);
System.out.println("</p>");
}
return ("");
}
如何将while(matcher.find
与此if(carac>=
合并,以便我可以获得此输出:&lt; p为H. &LT; H2&GT;分贝&lt; / H2&GT; &LT; / p为H.这个输入:## Decibel ??? (而不是那样,我得到&lt; h2&gt; Decibel&lt; / h2&gt;。我正在制作一种算法,其中“#”在句子的开头被识别并变成&lt; h1&gt;&lt; / h1&gt;或者&lt; hn&gt;取决于#present的数量。之后,算法识别句子开头是否有大写字母;如果有,则在开头和结尾添加&lt; p&gt;&lt; / p&gt;该段。
我遇到的一个大问题是,我希望能够将两者结合起来。所以,让我说我会#Appendix,我希望它转换为&lt; p为H. &LT; H1&GT;附录&lt; / H1&GT; &LT; / p为H.
谢谢
答案 0 :(得分:0)
public static String convert(String str)
{
if (str.equals("# "))
System.out.println(" ");
Pattern pattern = Pattern.compile("(#+[^#]+)");
Matcher matcher = pattern.matcher(str);
while (matcher.find())
{
boolean append_p = false;
char carac;
for(int i = 0; i < str.length(); i++){
if(Character.isLetter(str.charAt((i)))){
if (Character.isUpperCase(str.charAt(i)))
{
System.out.print("<p>");
append_p = true;
break;
}
}else{
append_p = false;
}
}
String str1 = matcher.group(1);
if (str1.replaceFirst("#+", "").length() == 0 || str1.replaceFirst("#+", "").matches("[\\s]+"))
continue;
int n = str1.length() - str1.replaceFirst("#+", "").length();
System.out.print("<h" + n + ">" + str1.substring(n) + "</h" + n + ">");
if(append_p == true){ System.out.print("</p>"); append_p = false;}
}
if(Character.isUpperCase(str.charAt(0)){
System.out.println("<p>"+str+"</p>");
return ("");
}
这将测试第一个字符是否为大写字母并附加/前置<p></p>
。