【筆記試験問題】javaをバイト単位で切り捨てる
1882 ワード
これは卵が痛い筆記試験の問題です.
プログラミング:文字列を切り取る関数を作成し、文字列とバイト数として入力します.
*バイト単位で切り取られた文字列として出力されます.しかし漢字が半分に切られないことを保証するには、
*「私ABC」4のように、「私AB」と切り、「私ABC漢DEF」と入力し、6、
*「ABC+漢の半分」ではなく「ABC」と出力すべきです.
プログラミング:文字列を切り取る関数を作成し、文字列とバイト数として入力します.
*バイト単位で切り取られた文字列として出力されます.しかし漢字が半分に切られないことを保証するには、
*「私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);
}
}