Добавить пробелы между символами строки в Java? - PullRequest
22 голосов
/ 25 августа 2011

Я просто хочу добавить пробел между каждым символом строки.Может кто-нибудь помочь мне разобраться, как это сделать?

Например, учитывая "JAYARAM", мне нужно "J A Y A R A M" в результате.

Ответы [ 11 ]

50 голосов
/ 25 августа 2011

Если вы не хотите перебрать строку и сделать это "вручную", вы можете решить ее следующим образом:

yourString.replace("", " ").trim()

Это заменяет все «пустые подстроки» пробелом, а затем удаляет начальные / конечные пробелы.

демонстрация ideone.com


Альтернативное решение с использованием регулярных выражений:

yourString.replaceAll(".(?=.)", "$0 ")

В основном это говорит «Заменить все символы (кроме последнего) на сам символ, за которым следует пробел» .

демонстрация ideone.com

Документация ...

  • String.replaceAll (включая синтаксис $0)
  • Позитивный прогноз (т. Е. Синтаксис (?=.))
11 голосов
/ 25 августа 2011
StringBuilder result = new StringBuilder();
for (int i = 0; i < input.length(); i++) {
   if (i > 0) {
      result.append(" ");
    }

   result.append(input.charAt(i));
}

System.out.println(result.toString());
3 голосов
/ 25 августа 2011

Перебирайте символы строки и сохраняя в новом массиве / строке, вы можете добавить один пробел перед добавлением каждого символа.

Примерно так:

StringBuilder result = new StringBuilder();

for(int i = 0 ; i < str.length(); i++)
{
   result = result.append(str.charAt(i));
   if(i == str.length()-1)
      break;
   result = result.append(' ');
}

return (result.toString());
2 голосов
/ 25 августа 2011

Взорвите свою строку в массив символов, переберите массив символов и создайте новую строку, заменив символ на пробел.

1 голос
/ 27 мая 2014

Это будет работать для вставки любого символа любой конкретной позиции в вашей строке.

public static String insertCharacterForEveryNDistance(int distance, String original, char c){
    StringBuilder sb = new StringBuilder();
    char[] charArrayOfOriginal = original.toCharArray();
    for(int ch = 0 ; ch < charArrayOfOriginal.length ; ch++){
        if(ch % distance == 0)
            sb.append(c).append(charArrayOfOriginal[ch]);
        else
            sb.append(charArrayOfOriginal[ch]);
    }
    return sb.toString();
}

Тогда назови это так

String result = InsertSpaces.insertCharacterForEveryNDistance(1, "5434567845678965", ' ');
        System.out.println(result);
0 голосов
/ 27 июня 2018
public static void main(String[] args) {
    String name = "Harendra";
    System.out.println(String.valueOf(name).replaceAll(".(?!$)", "$0  "));
    System.out.println(String.valueOf(name).replaceAll(".", "$0  "));
}

Это дает следующие результаты при использовании любого из вышеперечисленного:

H arendra

H arendra

0 голосов
/ 12 июля 2016

Я создаю Java-метод для этой цели с динамическим символом

public String insertSpace(String myString,int indexno,char myChar){
    myString=myString.substring(0, indexno)+ myChar+myString.substring(indexno);
    System.out.println(myString);
    return myString;
}
0 голосов
/ 11 декабря 2015

Я считаю, что он искал код типа возврата носителя MIME-кода, такой как% 0D% 0A (для возврата или разрыва строки) а также \ u00A0 (для разнесения) или альтернативно $ # 032

0 голосов
/ 29 сентября 2011

Если вы используете строителя строк, было бы эффективно инициализировать длину при создании объекта.Длина будет 2 * length ofString-1.

Или создание массива char и преобразование его обратно в строку приведет к тому же результату.что вы также напишете несколько тестовых примеров, это сделает ваше решение завершенным.

0 голосов
/ 25 августа 2011

Это та же проблема, что и объединение массива с запятыми. Эта версия корректно создает пробелы только между символами и избегает ненужных переходов внутри цикла:

String input = "Hello";
StringBuilder result = new StringBuilder();
if (input.length() > 0) {
    result.append(input.charAt(0));
    for (int i = 1; i < input.length(); i++) {
        result.append(" ");
        result.append(input.charAt(i));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...