Java 按字节截取带有汉字的字符串的一种做法
Java 按字节截取带有汉字的字符串的解法,网上有不少讨论。这里我也给出一种我自己的处理,基本原理还是统计要截取的字节数中是表示汉字的字节数是否是偶数个,即是否刚好包括了完整的汉字。
/**
* 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
* 按上述规则,输入“我ABC汉DEF 1”,应返回空字符串,而不是“我”。
*/
public class CutMultibyte {
public static String cutMultibyte(String splitStr, int extract) {
byte[] bytes = splitStr.getBytes();
//截取字节数不小于原始字节数时直接返回原字符串。注意字节数一定要用 bytes.length,用字符串的 length() 方法返回的是字符数!
if (extract >= bytes.length) {
return splitStr;
}
else {
int result = 0;
int cutLength = 0;
//统计出在要截取的字节中有几个字节是负数
for (int i = 0; i < extract; i++) {
if (bytes[i] < 0) {
cutLength++;
}
}
//若负数字节数是偶数,即要截取的字节数中遇到刚好是若干完整的汉字,则截取字节数不变;否则负数字节数是奇数,表示遇到的不是完整汉字,截取字节数减 1。
if (cutLength % 2 == 0) {
result = extract;
}
else {
result = extract - 1;
}
String substrx = new String(bytes, 0, result);
return substrx;
}
}
public static void main(String args[]) {
String str = args[0];
int num = Integer.valueOf(ar
相关文档:
PROCEDURE user_Login (
i_AuthID IN user_UserPass.UserID%TYPE, --用户代码
i_FunctionCode IN &n ......
我有一万元钱,是借的!我借了这一万块钱准备去北京继续学习。
我是一个大专生,不入流我学校!虽然我相信一个人的努力能改变命运!所以我一直都在努力的学习JAVA技术,希望能在这条路上走的更远!我有女朋友,对我很好,也很支持我!但我从格力空调辞职,我就选择了JA ......
只针对不正常的条件才使用异常
异常只应该被用于不正常的条件,它们永远不应被用于正常的控制流。
下面是一个用异常作遍历结束条件的滥用异常的例子:
//horrible abuse of exceptions. Don't ever do this!
try{
int i=0;
while(true)a[i++].f();
}catch(ArrayIndexOutOfBoundsException e){
......
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"\@宋体" ......