Как поменять строковые символы в Java? - PullRequest
25 голосов
/ 05 июня 2009

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

Ответы [ 14 ]

0 голосов
/ 05 апреля 2016
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();
}
0 голосов
/ 15 октября 2015

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

/**
 * 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();
}
0 голосов
/ 12 сентября 2013
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);

    }
}
0 голосов
/ 05 июня 2009

String.replaceAll () или replaceFirst ()

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

Ссылка на JavaDocs String API

...