日期:2014-05-20  浏览次数:20765 次

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


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

------解决方案--------------------
http://www.regexlab.com/zh/regref.htm
正则表达式的详细的介绍,你可以参考一下
------解决方案--------------------
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>
不知道这样可不可以?如果要去掉其他的非中文字符,只要再修改一下即可。