请教高手:
   我现在有一段类似下面的头尾含有html标记的字符串:
   String str= "<font size=2>结帖方法:点击帖子右上的管理链接,进入管理页面,在要给分的回复后的文本框中填写分数,然后输入自己的密码,点击</font>";
   我现在要对标记内的中文做字符串长度截取,截取完后还需要把头尾的html标记加上去,请教如何实现?<html标记可能不只一个,但中文字符肯定包含在html标记间>

解决方案 »

  1.   

    只说下核心的思路吧:
    可以用正则表达式匹配html标签
    如果中间全都是中文字符,也可以一个字符一个字符的读,用Character类的isDigit、isLetter等函数或提供的其他函数来判断是不是汉字,如果是,则开始计数……
      

  2.   

    正则可以,但是截取后还需要把过滤掉的html标记再补回去,组成新的字符串!
    谢谢楼上的指点,能不能给个简单的例子?
      

  3.   

    http://www.regexlab.com/zh/regref.htm
    正则表达式的详细的介绍,你可以参考一下
      

  4.   

    正则表达式,迭代。
    我的java出了点问题,所以不能把代码贴出来。
      

  5.   

    import java.util.regex.*;public class StringHandle{
    private static Pattern p;
    private static Matcher m;
    private static String str= "<html><font size=2>结帖方法:"+
    "点击帖子右上的<html>管理链接,进入管理页面"+
    ",在要给分的回复后的文本框中</html>填写分数,然后输入自己的密码,点击</font></html>";
    public static String getString(String str){
    String regEx = "[\\u4e00-\\u9fa5][\\u4e00-\\u9fa5]+(.*)[\\u4e00-\\u9fa5][\\u4e00-\\u9fa5]+";
    StringBuffer sb=new StringBuffer("<html>");
    p = Pattern.compile(regEx);
    m = p.matcher(str);
    int i=0;
    while(m.find()){
    i++;
    if(i%2!=0)
    sb.append(m.group()+"<html>");
    else 
    sb.append(m.group()+"</html>");
    }
    return sb.toString();
    }
    public static void main(String[] args){
    System.out.println(getString(str));
    }
    }
    输出:
    <html>结帖方法:点击帖子右上的<html>管理链接,进入管理页面,在要给分的回复后的文本框中</html>填写分数,然后
    输入自己的密码,点击<html>
    不知道这样可不可以?如果要去掉其他的非中文字符,只要再修改一下即可。
      

  6.   

    谢谢,biaoflying(biaoflying) !你给的方法对我很有启发,不过,与我说的有点不同:我碰到的问题是这样的:
        我的程序接收页面post提交过来的一串字符,在把这段信息放入到数据库中时,如果长度大于设定的值,那插入数据库时必须对字符串做截取。
        在做截取的时候,因为这串字符可能是包含在几个简单的html标记间的(字的显示样式),而我所要的就是 把html标记间的字符串取出,使截取该字符串的长度加上html标记的长度小于等于设定的值!
      

  7.   

    例如:
      现有一串字符如下:
       String strVal = "<font size=5><b><u>需要被截取的字符串</u></b></font>";  假如上面的字符串长度已经大于了设定的长度,那么我就要做截取:  那截取后的结果应该类似如下的字符串:  
       strVal = "<font size=5><b><u>需要被截取的</u></b></font>";