如题!
例如:abcdefg  输出aceg

解决方案 »

  1.   

    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;
    }
      

  2.   

    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));
    }

    }}
      

  3.   

    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)
      

  4.   

    如果楼主想输出aceg的话,循环的时候直接i+=2。
      

  5.   

    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();
      

  6.   

    "abcdef123456".replaceAll("(.).", "$1")
      

  7.   

    如果是偶数,就是"abcdef123456".replaceAll(".(.)|(.)$", "$1")
      

  8.   

    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;
        }
    }
      

  9.   

    shine333(enihs) 的答案比较经典
      

  10.   

    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也被抹掉了。