所需知识:汉字字符占两个字节,英文字符占一个字节,如何判断汉字还是英文。
[ \u4e00-\u9fa5]是汉字的正则表达式,包含了所有汉字的unicode编码。故将每个字符匹配该表达式可以判断是否是汉字。string[i].matchs();
参考: http://blog.csdn.net/tinyletero/article/details/8201465
package cn;
import java.util.*;
public class StringCutting {
private static int n;
private static String ss;
/**
* StringCut函数是输出字符串的前n个字节
* */
public static void StringCut(String[] str){
int count=0;
String zhengze_hanzi="[\u4e00-\u9fa5]";//汉字的正则表达式
for(int i=0;i<str.length;i++){
if(str[i].matches(zhengze_hanzi)){
//将每个字符与正则表达式进行匹配,返回true或者false。
count+=2;
}
else {count+=1;}
if (count<n){
System.out.println(str[i]);
}
else if(count==n){
System.out.println(str[i]);
}
else {break;}
}
}
/**
* SetValue()函数是将字符串ss转化成为字符串数组,因为matchs函数的参数是字符串而不是字符。
* */
public static String[] SetValue(){
String[] string=new String[ss.length()];
for (int i=0;i<ss.length();i++){
string[i]=ss.substring(i,i+1);
}
return string;
}
public static void main(String[] args) {
System.out.println("please input one string here!"+"");
Scanner in = new Scanner(System.in); //Scanner类
ss=in.next();//从键盘获取字符串
System.out.println("The string is: "+ss);
System.out.println("please input one number here! ");
n=in.nextInt();//从键盘获取字符串,并以数值的形式取出来。
System.out.println("The number is: "+n);
StringCut(SetValue());
}
}
运行结果如图: