字串程式設計題一道
阿新 • • 發佈:2019-01-02
編寫一個擷取字串的函式,輸入為一個字串和位元組數,輸出為按位元組擷取的字串。但是要保證漢字不被截去半個,列如“人ABC”4應該擷取為“人AB”,輸入“人ABC們DEF”6,應該輸出“人ABC”而不是“人ABC+半個們”。
package cn.exercise.algorithmsTest;
/**
* 編寫一個擷取字串的函式,輸入為一個字串和位元組數,輸出為按位元組擷取的字串。但是要保證漢字不被截去半個,
* 列如“人ABC"4應該擷取為“人AB”,輸入“人ABC們DEF”6,應該輸出“人ABC”而不是“人ABC+半個們”。
*
* @author 小豪
*
*/
public class Test13 {
// 判斷字元c是否是中文字元,如果是返回true
public static boolean isChinese(char c) {
String sb = String.valueOf(c);
return sb.getBytes().length > 1 ? true : false;
}
public String truncateStr(String str, int len) {
if (str == null || str.equals("") || len == 0 ) {
return "";
}
char[] charArr = str.toCharArray();
StringBuilder sb = new StringBuilder("");
int count = 0;
for (char cc : charArr) {
if (count < len) {
if (isChinese(cc)) {
if (count + 1 == len) {//如果要求擷取的字串的長度只差一個字元,但接下來的字元是中文。則擷取結果子串中不儲存這個中文字串
return sb.toString();
}
count = count + 2;
sb = sb.append(cc);
} else {
count = count + 1;
sb = sb.append(cc);
}
} else {
break;
}
}
return sb.toString();
}
public static void main(String[] args) {
Test13 a = new Test13();
String sb = "人ABC們DEF";
System.out.println(a.truncateStr(sb, 6));
}
}
執行結果 人ABC