汉字显示的问题 怎么样确保字符串中汉字的显示在奇数位,如“i我要进屋”需要把“我”的前面加一个空格。怎么实现。在线等String 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 转成数组,在判断下标,是就正常输出,不是就append一个空格 楼上的说法只能判断,但是append空格的时候会出现一个问题,append空格后后面的那些汉字本来处于奇数位的就不在处于奇数位了,但是还是会被append空格。 我写了一个楼主参考:public class ChineseCharAtEvev{ public static void main(String[] args){ //String original = "i我要进屋"; String original = "i我要进屋fg我要喝水,我要看报"; String result = change(original); System.out.println("originale string is \""+original+"\""); System.out.println("result string is \""+result+"\""); } //定义一个StringBuilder对象,用于产生一个新的字符串,使汉字的位置在偶数位上。 //返回新的字符串。 public static String change(String original){ boolean even = false; //记录ascii码出现的位置是否是偶数。 int insert_numbers = 0; //记录插入的空格个数,以计算后面的ascii字符位置。 boolean isAscii = false; //判断是否是ASCII字符。 StringBuilder sb = new StringBuilder(""); for(int i=0; i<original.length(); i++){ char c= original.charAt(i); if(((int)c)<128){ //小于128认为是ASCII字符。 sb.append(c); isAscii = true; even = ((i + insert_numbers)%2 ==0 ? true : false); }else{ //大于128认为使汉字。 if(isAscii && even){ sb.append(' '); sb.append(c); isAscii = false; even = false; insert_numbers++; }else{ sb.append(c); isAscii = false; even = false; } } }//end for return sb.toString(); }//end change} public class testString{ private final static String str = "adasd 阿斯大sa sda 我阿呆阿呆"; // 中文范围 private final static Pattern CHINESE_Pattern = Pattern.compile("[\u0391-\uFFE5]+$"); // 中文范围 public static void main(String[] args) { char[] ch = str.toCharArray(); StringBuffer sb = new StringBuffer(); for (int i = 0, k = 1; i < ch.length; i++, k++) { if (i % 2 != 0) { if (CHINESE_Pattern.matcher(String.valueOf(ch[i])).matches()) { if (ch[i - 1] == ' ') // 是中文判断前面是否已存在空格 { sb.append(ch[i]); // 如果存在空格直接添加 } else { sb.append(" " + ch[i]); } } else // 不是中文直接加 { sb.append(ch[i]); } } else { sb.append(ch[i]); } } System.out.println(sb.toString()); }} 求助-获取麦克风状态(即:是否可用) 怎么用 JAVA 编成实现 获得本机的 内存信息 和 操作系统 信息 以及硬盘信息呢 ? 为什么么不能清空content文本 SWT 给工具栏加图标。 新手请教:DOS窗口javac MyFirst.java提示javac.exe - 应用程序错误 初学者问题:请问一个正常的程序 大概多少行代码 急求JAVA代码 applet问题 如何获知鼠标点击在JTable的哪一行? 有没有办法可以实现A类的子类都实现E接口或者E接口的子类 CardLayout布局的问题,请问怎么改?小菜求教 请教个Java中sql2000的模糊查询问题
public static void main(String[] args){
//String original = "i我要进屋";
String original = "i我要进屋fg我要喝水,我要看报";
String result = change(original);
System.out.println("originale string is \""+original+"\"");
System.out.println("result string is \""+result+"\"");
}
//定义一个StringBuilder对象,用于产生一个新的字符串,使汉字的位置在偶数位上。
//返回新的字符串。
public static String change(String original){
boolean even = false; //记录ascii码出现的位置是否是偶数。
int insert_numbers = 0; //记录插入的空格个数,以计算后面的ascii字符位置。
boolean isAscii = false; //判断是否是ASCII字符。 StringBuilder sb = new StringBuilder("");
for(int i=0; i<original.length(); i++){
char c= original.charAt(i);
if(((int)c)<128){ //小于128认为是ASCII字符。
sb.append(c);
isAscii = true;
even = ((i + insert_numbers)%2 ==0 ? true : false);
}else{ //大于128认为使汉字。
if(isAscii && even){
sb.append(' ');
sb.append(c);
isAscii = false;
even = false;
insert_numbers++;
}else{
sb.append(c);
isAscii = false;
even = false;
}
}
}//end for
return sb.toString();
}//end change
}
public class testString
{
private final static String str = "adasd 阿斯大sa sda 我阿呆阿呆";
// 中文范围
private final static Pattern CHINESE_Pattern = Pattern.compile("[\u0391-\uFFE5]+$"); // 中文范围 public static void main(String[] args)
{ char[] ch = str.toCharArray();
StringBuffer sb = new StringBuffer();
for (int i = 0, k = 1; i < ch.length; i++, k++)
{
if (i % 2 != 0)
{
if (CHINESE_Pattern.matcher(String.valueOf(ch[i])).matches())
{
if (ch[i - 1] == ' ') // 是中文判断前面是否已存在空格
{
sb.append(ch[i]); // 如果存在空格直接添加
} else
{
sb.append(" " + ch[i]);
}
} else
// 不是中文直接加
{
sb.append(ch[i]);
}
} else
{
sb.append(ch[i]);
} }
System.out.println(sb.toString());
}
}