【筆記試験問題】javaをバイト単位で切り捨てる

1882 ワード

これは卵が痛い筆記試験の問題です.
プログラミング:文字列を切り取る関数を作成し、文字列とバイト数として入力します.
*バイト単位で切り取られた文字列として出力されます.しかし漢字が半分に切られないことを保証するには、
*「私ABC」4のように、「私AB」と切り、「私ABC漢DEF」と入力し、6、
*「ABC+漢の半分」ではなく「ABC」と出力すべきです.
package com.duduli.li;

import java.util.Arrays;

public class CutString {
/**
 *   :            ,            ,
 *             。             ,
 *  “ ABC”4,    “ AB”,  “ ABC DEF”,6,
 *      “ ABC”   “ ABC+    ”。 

 */
public void cutString(String s,int length){
byte [] b = s.getBytes();
byte [] str;

System.out.println(new String(Arrays.copyOfRange(b, 0, 1)));
//     byte A--Z a--z     
System.out.println((b[length-2]>"A".getBytes()[0]&&b[length-2]<"Z".getBytes()[0]));
System.out.println((b[length-2]>"a".getBytes()[0]&&b[length-2]<"z".getBytes()[0]));
if((b[length-1]>"A".getBytes()[0]&&b[length-1]<"Z".getBytes()[0])||
(b[length-1]>"a".getBytes()[0]&&b[length-1]<"z".getBytes()[0])){
str = Arrays.copyOfRange(b, 0, length);
//          ,     byte    A--Z a--z  
}else if(!((b[length-2]>"A".getBytes()[0]&&b[length-2]<"Z".getBytes()[0])||
(b[length-2]>"a".getBytes()[0]&&b[length-2]<"z".getBytes()[0]))){
str = Arrays.copyOfRange(b, 0, length);
}else{
str = Arrays.copyOfRange(b, 0, length-1);
}
System.out.println(new String(str));
}
/**\\u4e00-\\u9fa5       
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
CutString cs = new CutString();
String s = "wodfe dewod dek";
cs.cutString(s, 7);
}

}