Подтвердить что ты не робот

Как поменять строки на Java?

Как я могу поменять два символа в String? Например, "abcde" станет "bacde".

4b9b3361

Ответ 1

Так как объекты String неизменяемы, перейдите в char[] через toCharArray, заменив символы, а затем создайте новый String от char[] с помощью конструктора String(char[]).

Следующий пример заменяет первый и второй символы:

String originalString = "abcde";

char[] c = originalString.toCharArray();

// Replace with a "swap" function, if desired:
char temp = c[0];
c[0] = c[1];
c[1] = temp;

String swappedString = new String(c);

System.out.println(originalString);
System.out.println(swappedString);

Результат:

abcde
bacde

Ответ 2

'В строке, вы не можете. Строки неизменяемы. Вы можете легко создать вторую строку с помощью:

 String second = first.replaceFirst("(.)(.)", "$2$1");

Ответ 3

Об этом ответили несколько раз, но здесь еще один для удовольствия: -)

public class Tmp {
    public static void main(String[] args) {
        System.out.println(swapChars("abcde", 0, 1));
    }
    private static String swapChars(String str, int lIdx, int rIdx) {
        StringBuilder sb = new StringBuilder(str);
        char l = sb.charAt(lIdx), r = sb.charAt(rIdx);
        sb.setCharAt(lIdx, r);
        sb.setCharAt(rIdx, l);
        return sb.toString();
    }
}

Ответ 4

static String  string_swap(String str, int x, int y)
{

    if( x < 0 || x >= str.length() || y < 0 || y >= str.length())
    return "Invalid index";

    char arr[] = str.toCharArray();
    char tmp = arr[x];
    arr[x] = arr[y];
    arr[y] = tmp;

    return new String(arr);
}

Ответ 5

StringBuilder sb = new StringBuilder("abcde");
    sb.setCharAt(0, 'b');
    sb.setCharAt(1, 'a');
    String newString = sb.toString();

Ответ 6

String.toCharArray() предоставит вам массив символов, представляющих эту строку.

Вы можете изменить это, не изменяя исходную строку (свопинг любых символов, которые вам нужны), а затем создайте новую строку, используя String(char[]).

Обратите внимание, что строки неизменяемы, поэтому вам нужно создать новый строковый объект.

Ответ 7

Вот пример кода java для рекурсивного обмена java-символами. Вы можете получить полный код примера http://java2novice.com/java-interview-programs/string-reverse-recursive/

public String reverseString(String str){

    if(str.length() == 1){
        return str;
    } else {
        reverse += str.charAt(str.length()-1)
                +reverseString(str.substring(0,str.length()-1));
        return reverse;
    }
}

Ответ 8

String.replaceAll() или replaceFirst()

String s = "abcde".replaceAll("ab", "ba")

Ссылка на JavaDocs String API

Ответ 9

import java.io.*;
class swaping
{
     public static void main(String args[]) 
     {
         String name="premkumarg";
         int len=name.length();
         char[] c = name.toCharArray();
         for(int i=0;i<len-1;i=i+2)
         {
             char temp= c[i];
             c[i]=c[i+1];
             c[i+1]=temp;
         }

         System.out.println("Swapping string is: ");
         System.out.println(c);

    }
}

Ответ 10

Здесь решение с a StringBuilder. Он поддерживает заполнение результирующих строк с нечетной длиной строки с символом заполнения. Как вы уже догадались, этот метод сделан для шестнадцатеричного обмена.

/**
 * Swaps every character at position i with the character at position i + 1 in the given
 * string.
 */
public static String swapCharacters(final String value, final boolean padding)
{
   if ( value == null )
   {
      return null;
   }

   final StringBuilder stringBuilder = new StringBuilder();
   int posA = 0;
   int posB = 1;
   final char padChar = 'F';

   // swap characters
   while ( posA < value.length() && posB < value.length() )
   {
      stringBuilder.append( value.charAt( posB ) ).append( value.charAt( posA ) );
      posA += 2;
      posB += 2;
   }

   // if resulting string is still smaller than original string we missed the last
   // character
   if ( stringBuilder.length() < value.length() )
   {
      stringBuilder.append( value.charAt( posA ) );
   }

   // add the padding character for uneven strings
   if ( padding && value.length() % 2 != 0 )
   {
      stringBuilder.append( padChar );
   }

   return stringBuilder.toString();
}

Ответ 11

public static String shuffle(String s) {
    List<String> letters = Arrays.asList(s.split(""));
    Collections.shuffle(letters);
    StringBuilder t = new StringBuilder(s.length());
    for (String k : letters) {
        t.append(k);
    }
    return t.toString();
}

Ответ 12

Я думаю, что это должно помочь.

import java.util.*;

public class StringSwap{

public static void main(String ar[]){
    Scanner in = new Scanner(System.in);
    String s = in.next();
    System.out.println(new StringBuffer(s.substring(0,2)).reverse().toString().concat(s.substring(2)));
  }
}

Ответ 13

//это очень простой способ упорядочить строку в алфавитном порядке, здесь нет ничего необычного и отлично подходит для школьного использования

пакет string_sorter;

открытый класс String_Sorter {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {

    String word = "jihgfedcba";
    for (int endOfString = word.length(); endOfString > 0; endOfString--) {

        int largestWord = word.charAt(0);
        int location = 0;
        for (int index = 0; index < endOfString; index++) {

            if (word.charAt(index) > largestWord) {

                largestWord = word.charAt(index);
                location = index;
            }
        }

        if (location < endOfString - 1) {

            String newString = word.substring(0, location) + word.charAt(endOfString - 1) + word.substring(location + 1, endOfString - 1) + word.charAt(location);
            word = newString;
        }
        System.out.println(word);
    }

    System.out.println(word);
}

}

Ответ 14

return  str.charAt(1) + str.charAt(0) + str.substring(2); // will swap the first two character in string