将while循环与if语句组合困难

时间:2012-10-25 05:49:21

标签: java if-statement while-loop

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.

谢谢

1 个答案:

答案 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>