java,要实现字符串按字节截取的方法

String本来提供了按字符截取的substring方法,但这里要求实现按字节截取我的思路是:把字符串变成char[],数组遍历,判断每个元素占1个字节还是2个字节。↓占... String本来提供了按字符截取的substring方法,但这里要求实现按字节截取

我的思路是:
把字符串变成char[],数组遍历,判断每个元素占1个字节还是2个字节。

占2个字节的字符,元素就替换成一个占1字节的占位符符号。
(中文字按字节截取总不能劈成两半吧?如果截取遇到占2个字节的却整个拿就不算按字节截取了)

然后按照起始索引和最终索引拼合char数组元素,得到结果字符串。

这里最大的问题是:怎么去判断char类型所占字节长度??查了api Character类仍没有办法……

别复制粘贴过往问题,我看过了,没有满意的
展开
 我来答
明明如雾
2013-09-29
知道答主
回答量:36
采纳率:0%
帮助的人:19.1万
展开全部
这个不能用char数组的,因为char的范围是-128~128,汉字一般大于127的,我提供一个方案,将string转成byte数组,可以跟编码方式,如果是gbk就是两个一组,utf-8是3个一组,遍历数组,使用逻辑与&128如果不为0表示汉字,就按编发方式三个或两个一组,如果为0就是普通的iso-8859-1,也就是一个字节一个字符,这样问题就解决了,希望对你有帮助
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-09-29
展开全部
public int chineseLength(String s7) { 

   /** 

   * 获取字符串的长度,如果有中文,则每个中文字符计为2位 

   * 

   * @param value 

   *            指定的字符串 

   * @return 字符串的长度 

   */  

      int valueLength = 0;  

      int number = 0;

      String chinese = "[\u0391-\uFFE5]";  

      /* 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1 */  

      for (int q = 0; q < s7.length(); q++) {  

          /* 获取一个字符 */  

          String temp = s7.substring(q, q + 1);  

          /* 判断是否为中文字符 */  

          if (temp.matches(chinese)) {  

              /* 中文字符长度为2 */  

              valueLength += 2;  

              //返回这个字符串中有几个汉字

              number+=1;

          } else {  

              /* 其他字符长度为1 */  

              valueLength += 1;  

          }  

      }  

      return number;

 }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
杰之恋68
2013-09-29 · TA获得超过144个赞
知道答主
回答量:196
采纳率:0%
帮助的人:28.9万
展开全部
var max = rules[i + 1];
//var len = field.val().length; //原有的校验
//新增的校验
//add by songyf 2013.09.12 修改maxSize 实现中英文字符长度的判断
//区分全角半角字符
var str = field.val();
var strlength=0;
for (var j=0;j<str.length;j++)
{
var charCode = str.charCodeAt(j);
if(charCode>=0 && charCode<=128){
strlength = strlength+1;
} else {
strlength=strlength + 2;
}
}
var len = strlength;
这串代码中有部分可以区分是中文字符还是英文字符 ,你看有可以用到的吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友12ee0fd
2013-09-29 · TA获得超过4.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:66%
帮助的人:1979万
展开全部
占几个字节是由编码方案决定的。常见的GBK,UTF8 , UTF16各不相同。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2013-09-29 · TA获得超过1243个赞
知道小有建树答主
回答量:2126
采纳率:55%
帮助的人:677万
展开全部
为啥要用char? 把一个个String截出来getbytes一下。。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式