求输出一个字符串的奇位的程序 如题!例如:abcdefg 输出aceg 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public static String odds(String s) String ret=""; if (s!=null) for(int i=0;i<s.length();i++){ if(i%2==1) ret+=s.charAt(i); } return ret;} package LastMonth;public class Mark_Chen { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub String s = "asdfghjhjk"; for(int i = 0 ; i<s.length(); i++){ if(i%2==0) System.out.print(s.charAt(i)); } }} public class Test{ public static void main(String[] args) throws Exception { String s="abcdefghijk"; System.out.println(s); System.out.println(getOdd(s)); } public static String getOdd(String s) { StringBuffer sb=new StringBuffer(); char[] c=s.toCharArray(); for(int i=0;i<c.length;i++) { if(i%2!=0) sb.append(c[i]); } return sb.toString(); }}另外我纠正你一下,在java中字符串中的字符是从0开始索引的,所以你你想要abcdefg奇数位的输出应该是bdf,如果你想要你上面提到的那种输出,就把if(i%2!=0)改为if(i%2==0) 如果楼主想输出aceg的话,循环的时候直接i+=2。 String str = "abcdefg";boolean turn = false;StringBuffer buffer = new StringBuffer();for (int i = 0; i < str.length; i++) { if (!turn) { turn = true; buffer.append(str.charAt(i)); } else { turn = false; }}return buffer.toString(); "abcdef123456".replaceAll("(.).", "$1") 如果是偶数,就是"abcdef123456".replaceAll(".(.)|(.)$", "$1") public class P_num { public P_num() { } public static void main (String[] args) { System.out.println(odds("abcdefg")); } public static String odds(String str){ String res=""; for(int i=0;i<str.length();i+=2){ res+=str.charAt(i); } return res; }} shine333(enihs) 的答案比较经典 OK,解释一下,$1,代表正则中第一个group捕获(也就是用括号圈出来的),$0代表整个匹配奇数:replaceAll("(.).", "$1")从左面开始,每次匹配两个字符,并把这两个字符替换为第一个group,也就是两个里面的第一个。假如abcdef123456,就依次ab->a, cd->c....56->5,假如abcdef1234567,就依次ab->a, cd->c....56->5,7一个字符,不匹配,就保留偶数,正则“或者”(|)之前的就不说了,“或者”之后那个$代表行末,假如abcdef123456,ab匹配".(.)" -> b, cd->d ... 56仍然匹配".(.)"->6,没有东西被匹配到"(.)$"假如abcdef1234567,ab,cd.....56都和之前类似,唯独7是奇数,不匹配".(.)",但也不能保留,所以用"(.)$"来匹配。不过,虽然7匹配的是(.)$,但是替换的却是$1,也就是".(.)"中的"(.)"(整个表达式中(.)$代表的group是$2),而这次行末匹配中根本没有$1,所以7也被抹掉了。 摇骰子游戏注释 在JFrame中加入图片的方法及实现 怎样获得一个子组件的绝对位置? 一个sql语句,请高手帮忙! 请问怎样令jdbTable的某个cell不能编辑啊? 给三个float 数r,g,b随机赋值,而且限定范围[0,255],应该怎样写? 寻求,java2类库电子版?? 关于java的控件 连结数据库时提示java.sql.sqlexception IO异常? 啥错亚?? 一个关于DES的问题 关于解析网络xml的中文问题
String ret="";
if (s!=null)
for(int i=0;i<s.length();i++){
if(i%2==1) ret+=s.charAt(i);
}
return ret;
}
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "asdfghjhjk";
for(int i = 0 ; i<s.length(); i++){
if(i%2==0)
System.out.print(s.charAt(i));
}
}}
{
public static void main(String[] args) throws Exception
{
String s="abcdefghijk";
System.out.println(s);
System.out.println(getOdd(s));
}
public static String getOdd(String s)
{
StringBuffer sb=new StringBuffer();
char[] c=s.toCharArray();
for(int i=0;i<c.length;i++)
{
if(i%2!=0)
sb.append(c[i]);
}
return sb.toString();
}
}另外我纠正你一下,在java中字符串中的字符是从0开始索引的,所以你你想要abcdefg奇数位的输出应该是bdf,如果你想要你上面提到的那种输出,就把if(i%2!=0)改为if(i%2==0)
boolean turn = false;
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < str.length; i++) {
if (!turn) {
turn = true;
buffer.append(str.charAt(i));
} else {
turn = false;
}
}
return buffer.toString();
}
public static void main (String[] args) {
System.out.println(odds("abcdefg"));
}
public static String odds(String str){
String res="";
for(int i=0;i<str.length();i+=2){
res+=str.charAt(i);
}
return res;
}
}
replaceAll("(.).", "$1")
从左面开始,每次匹配两个字符,并把这两个字符替换为第一个group,也就是两个里面的第一个。
假如abcdef123456,就依次ab->a, cd->c....56->5,
假如abcdef1234567,就依次ab->a, cd->c....56->5,7一个字符,不匹配,就保留偶数,正则“或者”(|)之前的就不说了,“或者”之后那个$代表行末,
假如abcdef123456,ab匹配".(.)" -> b, cd->d ... 56仍然匹配".(.)"->6,没有东西被匹配到"(.)$"
假如abcdef1234567,ab,cd.....56都和之前类似,唯独7是奇数,不匹配".(.)",但也不能保留,所以用"(.)$"来匹配。不过,虽然7匹配的是(.)$,但是替换的却是$1,也就是".(.)"中的"(.)"(整个表达式中(.)$代表的group是$2),而这次行末匹配中根本没有$1,所以7也被抹掉了。