代码之家  ›  专栏  ›  技术社区  ›  Tom

如何在Java中交换字符串的第一个和最后一个字符?

  •  9
  • Tom  · 技术社区  · 17 年前

    http://www.javabat.com/prob/p123384


    示例:

    frontBack("code") → "eodc"
    frontBack("a") → "a"
    frontBack("ab") → "ba"
    

    代码:

    public String frontBack(String str) 
    {
        String aString = "";
        
        if (str.length() == 0){
            return "";
        }
        
        char beginning = str.charAt(0);
        char end = str.charAt(str.length() - 1);
        
        str.replace(beginning, end);
        str.replace(end, beginning);
        
        return str;
    }
    
    17 回复  |  直到 6 年前
        1
  •  9
  •   mnuzzo    17 年前

    Java API

    String temp = new String(charArray);
    

    并将其归还。这是假设charArray是您的字符数组。

        2
  •  7
  •   Community Mohan Dere    9 年前

    String.replace 方法,我建议使用 String.substring beginning end

    String 字符串替换

    replace 方法无法对原始方法进行任何更改 ,这是 str


    此外,这种方法在以下情况下效果不佳 字符串 字符串 长度为1会导致 StringIndexOutOfBoundsException ,因此,如果采取上述方法,这也必须作为特殊情况加以处理。

    indyK1ng's answer char[] 字符串 字符串

        3
  •  4
  •   erickson    17 年前

    String 字符串 replace

    字符串 char[] 所需的字符,创建一个新的 字符串

        4
  •  2
  •   John Kugelman Michael Hodel    17 年前

    • str.replace() str

    • replace 不是最好的。..考虑一下 frontBack("abcabc") :如果您的功能得到纠正,将替换 'a' 'c' "cbccbc" "abaaba"

        5
  •  2
  •   FreeMemory    17 年前

    replace String 字符串

    beginReplace = str.replace( beginning, end );
    endReplace = beginReplace.replace( end, beginning );
    return( str );
    

        6
  •  2
  •   akarnokd    17 年前

    又一个例子 :

    if (str.length() > 1) {
        char[] chars = str.toCharArray();
        // replace with swap()
        char first = chars[0];
        chars[0] = chars[chars.length - 1];
        chars[chars.length - 1] = first;
        str = new String(chars);
    }
    
    return str;
    

    编辑:

        7
  •  2
  •   rich    17 年前

    你可以使用正则表达式。。

    return str.replaceFirst("(.)(.*)(.)", "$3$2$1");
    
        8
  •  1
  •   Carl Manaster    17 年前

    public static String exchange(String s) {
        int n = s.length();
        if (n < 2)
            return s;
        return String.format("%s%s%s", s.charAt(n - 1), s.substring(1, n - 1), s.charAt(0));
    }
    
        9
  •  1
  •   Maarten Winkels    17 年前

    public String frontBack(String str) {
      if (str == null || str.length() == 0) {
        return str;
      }
      char[] cs = str.toCharArray();
      char first = cs[0];
      cs[0] = cs[cs.length -1];
      cs[cs.length -1] = first;
      return new String(cs);
    }
    


    另一种解决方案使用StringBuilder(通常用于进行字符串手动,因为字符串本身是不可变的。

    public String frontBack(String str) {
      if (str == null || str.length() == 0) {
        return str;
      }
      StringBuilder sb = new StringBuilder(str);  
      char first = sb.charAt(0);
      sb.setCharAt(0, sb.charAt(sb.length()-1));
      sb.setCharAt(sb.length()-1, first);
      return sb.toString();
    }
    

    public String frontBack(String str) {
      if (str == null || str.length() < 2) {
        return str;
      }
      StringBuilder sb = new StringBuilder(str);
      String sub = sb.substring(1, sb.length() -1);
      return sb.reverse().replace(1, sb.length() -1, sub).toString();
    }
    

    在这里,完整的字符串被反转,然后不应该反转的部分被子字符串替换。;)

        10
  •  0
  •   Thorbjørn Ravn Andersen    17 年前
    if (s.length < 2) {
       return s;
    }
    return s.subString(s.length - 1) + s.subString(1, s.length - 2) + s.subString(0, 1);
    

    (未经测试,索引可能为1。。。

        11
  •  0
  •   oxbow_lakes    17 年前
    public String frontBack(String input)
    {
        return
            input.substring(input.length() - 1) +  // The last character
            input.substring(1, input.length() - 1) +  // plus the middle part
            input.substring(0, 1);                  // plus the first character.
    }
    
        12
  •  0
  •   oxbow_lakes    17 年前


        13
  •  0
  •   Abdul Hanan Khan    10 年前
    public String lastChars(String a, String b) {
    
      if(a.length()>=1&&b.length()>=1){
       String str = a.substring(0,1);
        String str1 =b.substring(b.length()-1);
        return str+str1;
    }
    else if(a.length()==0&&b.length()==0){
     String v ="@";
    String z ="@";
    return v+z;
       }
       else if(a.length()==0&&b.length()>=1){
    
       String s ="@";
       String s1 = b.substring(b.length()-1);
       return s+s1;
       }
       else if(a.length()>=1&&b.length()==0){
       String f= a.substring(0,1);
       String h = "@";
       return f+h;
       }
       return a;
       }
    
        14
  •  0
  •   Martin Tournoij ravi.zombie    9 年前

    您可以使用以下代码:

    public String frontBack(String str) {
        if (str.length() <= 1) 
            return str;
    
        String mid = str.substring(1, str.length()-1);
    
        // last + mid + first
        return str.charAt(str.length()-1) + mid + str.charAt(0);
    }
    
        15
  •  -1
  •   Sindusha    10 年前
    class swap 
    {
    public static void main(String[] args) 
    {
        Scanner s=new Scanner(System.in);
        System.out.println("no of elements in array");
        int n=s.nextInt();
        int a[]=new int[n];
        System.out.println("Elements");
        for(int i=0;i<n;i++)
        {
            a[i]=s.nextInt();
        }
        int b[]=new int[n];
        for(int i=0;i<n;i++)
        {
            b[i]=a[i];
        }
        int end=n-1;
        b[0]=b[end];
        b[end]=a[0];
        for(int i=0;i<n;i++)
        {
            System.out.println(b[i]);
        }   
    }
    }
    
        16
  •  -1
  •   Jules Dupont Ahmed Elbendary    8 年前
    if (str.length() <= 1) {
      return str;
    }
    
    String mid = str.substring(1, str.length()-1);
    return str.charAt(str.length()-1) + mid + str.charAt(0);
    
        17
  •  -5
  •   Sam    8 年前
        function frontBack(str: string) { 
    
    
             return str.slice(str.length - 1) + str.slice(1, -1) + str.slice(0, 1) 
    
        }
    

    str.length -1