目:
編寫一個(gè)截取字符串的函數(shù),輸入為一個(gè)字符串和字節(jié)數(shù),輸出為按字節(jié)截取的字符串。 但是要保證漢字不被截半個(gè),如“我ABC”4,應(yīng)該截為“我AB”,輸入“我ABC漢DEF”,6,應(yīng)該輸出為“我ABC”而不是“我ABC+漢的半個(gè)”。
- package com.sw.suanfa.first.ten;
-
-
-
-
-
-
-
-
-
-
-
-
-
public class SubStringWithChina {
public static void main(String[] args) throws Exception{
String a = "我ABC漢DEF" ;
int len = 6 ;
String encoding = "UTF-8" ;
System.out.println( getSubString(a, len,encoding) );
a = "我ABC";
len = 4 ;
encoding = "gbk" ;
System.out.println( getSubString(a, len,encoding) );
}
/**
*
* @param str 傳入字符串
* @param len 截取字節(jié)數(shù)
* @param encoding 編碼方式
* @return 返回截取后的字符串
* @throws Exception
*/
public static String getSubString(String str,int len,String encoding) throws Exception{
if(str == null || str.length()<1) return null ;
if(len<1) return null ;
StringBuffer sb = new StringBuffer();
int all = 0 ;
for(int i=0;i<str.length();i++){
String tmp = str.substring(i,i+1);
sb.append(tmp);
byte[] tmpB = tmp.getBytes(encoding);
all +=tmpB.length ;
if(all>=len){
break ;
}
}
return sb.toString() ;
}
}
-
判斷字符串中是否含有漢字:
String str = "test中文漢字";
String regEx = "[\\u4e00-\\u9fa5]";
/**
* 判斷有沒有中文
*/
if (str.getBytes().length == str.length()) {
System.out.println("無漢字");
} else {
System.out.println("有漢字");
}
/**
* 如果有則打印出來
*/
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
while (m.find()) {
System.out.print(m.group(0) + "");
}

如題
1 public static void main(String[] args) {
2 // TODO Auto-generated method stub
3 System.out.println("請輸入要斷開的字符第幾位:");
4 Scanner input=new Scanner(System.in);
5 int len=input.nextInt();
6
7 //判斷字符是否為中文
8 String str = "sdf中國chinese對方";
9 byte[] strs=str.getBytes();
10 if(str.substring(len-1, len).matches("[\u4e00-\u9fa5]+")&&strs.length%2==0) {
11
12 // for (int i = 0; i < str.length(); i++) {
13 // if (str.substring(i, i + 1).matches("[\u4e00-\u9fa5]+")) {
14 // System.out.println(""+str.substring(i, i + 1)+""+"為漢字");
15 // }else{
16 // System.out.println(""+str.substring(i, i + 1)+""+"不為漢字");
17 // }
18 // }
19 System.out.println(str.substring(0, len-1));
20 }else{
21 System.out.println(str.substring(0,len-2));
22 }
23
24 }