我想要实现把一个字符串里面的中文和英文分割提取出来
比如这么一句话:
"做错事情,需要道歉的时候,说:I'am sorry. 现在请你说一遍"
我想要的结果是 返回一个数组
String[]{"做错事情,需要道歉的时候,说:","I'am sorry",". 现在请你说一遍"}
中英文字符的判断可以通过字符所占的字节数判断,一个英文一般1byte,中文为2byte
你说的应该是字符串的插入吧 用StringBuffe 方法 插入后,用一个变量来接。 然后将这个变量放到数组里面
用一个数组放所有的字符串,可以通过判断Unicode码的取值范围判断是英文字母或汉字,然后英文在前中文在后排序输出。
欢迎交流--
import java.util.regex.Matcher;
public class test {
public static void main (String[] args)
{
String s1 ="做错事情,需要道歉的时候,说:I'am sorry. 现在请你说一遍";
char [] array = new char[1000];
int t = 0;
StringBuffer s = new StringBuffer(s1);
for (int k=0;k<s.length();k++ )
{
char c = s.charAt(k);
if(c=='会')
System.out.println(k);
if(isChinese(c))
{
if(t == 0||isChinese(s.charAt(k-1))!=true)
{
array[t]='\"';
t++;
}
array[t]=c;
t++;
if(k!=s.length()-1){
if(!isChinese(s.charAt(k+1)))
{
array[t]='\"';
t++;
array[t]=',';
t++;
}
}
if(k==s.length()-1){
array[t]='\"';
t++;
break;
}
}
else
{
if(t == 0||isChinese(s.charAt(k-1))==true)
{
array[t]='\"';
t++;
}
array[t]=c;
t++;
if(k!=s.length()-1){
if(isChinese(s.charAt(k+1)))
{
array[t]='\"';
t++;
array[t]=',';
t++;
}
}
if(k==s.length()-1){
array[t]='\"';
t++;
break;
}
}
}
System.out.print(array);
}
//判断是不是英文
public static boolean isChinese(char c)
{
Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
|| ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
|| ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
|| ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
|| ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS)
{
return true;
}
return false;
}
}
补充下
char [] array = new char[50];//大小要提前设定会浪费
/*if(c=='会')
System.out.println(k);*/ //去掉