截取汉字字符长度问题,如“我们有4个中国人”,java截取后“我们有4个…”,而不会出现乱码。

36397 2007-07-09 10:20:51
截取汉字字符长度问题,如“我们有4个中国人”,java截取后“我们有4个…”,

而不会出现乱码。
...全文
1016 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wty814022051 2010-08-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jr_zhang 的回复:]

/**
* 第一个参数,传入的是要截的中英文字符串,第二个参数,要截取的长度。
* @param str
* @param subBytes
* @return str
*/
public String subString(String str, int subBytes) {
int bytes……
[/Quote]
没有判断空格呢?
jr_zhang 2007-07-09
  • 打赏
  • 举报
回复
/**
* 第一个参数,传入的是要截的中英文字符串,第二个参数,要截取的长度。
* @param str
* @param subBytes
* @return str
*/
public String subString(String str, int subBytes) {
int bytes = 0; // 用来存储字符串的总字节数
for (int i = 0; i < str.length(); i++) {
if (bytes == subBytes) {
return str.substring(0, i);}
char c = str.charAt(i);
if (c < 256) {
bytes += 1; // 英文字符的字节数看作1
}else {
bytes += 2; // 中文字符的字节数看作2
if(bytes - subBytes == 1){
return str.substring(0, i);
}
}
}
return str;
}
rickhunterchen 2007-07-09
  • 打赏
  • 举报
回复
编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。

答:代码如下:
package test;

class SplitString
{
String SplitStr;
int SplitByte;
public SplitString(String str,int bytes)
{
SplitStr=str;
SplitByte=bytes;
System.out.println("The String is:'"+SplitStr+"';SplitBytes="+SplitByte);
}
public void SplitIt()
{
int loopCount;


loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/Split

Byte+1);
System.out.println("Will Split into "+loopCount);
for (int i=1;i<=loopCount ;i++ )
{
if (i==loopCount){


System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));
} else {


System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));
}
}
}
public static void main(String[] args)
{
SplitString ss = new SplitString("test中dd文dsaf中男大3443n中国43中国人

0ewldfls=103",4);
ss.SplitIt();
}
}
  • 打赏
  • 举报
回复
public static String trancate(String input, int len) {
  StringBuffer sb = new StringBuffer(len);
  int count = 0;
  for (int i = 0; i < input.length(); i++) {
    char c = input.charAt(i);
    if (c <= '\u00ff') {
      count++;
    } else {
      count += 2;
      if (count > len) {
        return sb.append(" ...").toString().trim();
      }
    }
    sb.append(c);
    if (count >= len) {
      return sb.append(" ...").toString().trim();
    }
  }
  return input;
}

input 需要截取的字符串,len 被截取后的长度,一个汉字算 2 个长度。
KingNE 2007-07-09
  • 打赏
  • 举报
回复
SubString()
qianzongli 2007-07-09
  • 打赏
  • 举报
回复
<style type="text/css">

<!--

li {

list-style-type:none;

width:200px;

white-space:nowrap;

text-overflow:ellipsis;

overflow: hidden;

}

-->

</style>


在要输出字符的地方调用<li>

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧