Отсортируйте единственную Строку в Java

Принимаемый ответ падает на имена файлов с пробелом. Я не могу прокомментировать это (низкий показатель stackoverflow до сих пор), и я сейчас не уверен, как обновить команду alias, поэтому я поставлю улучшенную версию здесь:

git ls-files -z -o --exclude-standard | xargs -0 git add
120
задан starblue 3 March 2009 в 13:15
поделиться

3 ответа

toCharArray сопровождаемый Arrays.sort сопровождаемый Строковым вызовом конструктора:

import java.util.Arrays;

public class Test
{
    public static void main(String[] args)
    {
        String original = "edcba";
        char[] chars = original.toCharArray();
        Arrays.sort(chars);
        String sorted = new String(chars);
        System.out.println(sorted);
    }
}

РЕДАКТИРОВАНИЕ: Как tackline указывает, это перестанет работать, если строка будет содержать суррогатные пары или действительно составные символы (диакритический знак + e как отдельные символы) и т.д. В той точке, это становится намного более твердым..., надо надеяться, Вам не нужно это:), Кроме того, это просто заказывает ординалом, не беря капитализацию, диакритические знаки или что-либо еще во внимание.

199
ответ дан Jon Skeet 5 November 2019 в 08:15
поделиться

Нет нет никакого встроенного Строкового метода. Можно преобразовать его в массив символов, отсортировать его с помощью Arrays.sort и преобразовать тот назад в Строку.

String test= "edcba";
char[] ar = test.toCharArray();
Arrays.sort(ar);
String sorted = String.valueOf(ar);

Или, когда Вы хотите иметь дело правильно с определенным для локали материалом как символы верхнего регистра и символы с диакритикой:

import java.text.Collator;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Locale;

public class Test
{
  public static void main(String[] args)
  {
    Collator collator = Collator.getInstance(new Locale("fr", "FR"));
    String original = "éDedCBcbAàa";
    String[] split = original.split("");
    Arrays.sort(split, collator);
    String sorted = "";
    for (int i = 0; i < split.length; i++)
    {
      sorted += split[i];
    }
    System.out.println(sorted); // "aAàbBcCdDeé"
  }
}
47
ответ дан Jared Burrows 5 November 2019 в 08:15
поделиться
    String a ="dgfa";
    char [] c = a.toCharArray();
    Arrays.sort(c);
    return new String(c);

Примечание, что это не будет работать как ожидалось, если это будет смешанная Строка случая (Это поместит верхний регистр перед нижним регистром). Можно передать компаратор Методу сортировки изменить это.

14
ответ дан amit 5 November 2019 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: