it-roy-ru.com

Добавить пробелы между символами строки в Java?

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

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

21
Jey

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

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

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

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


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

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

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

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

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

49
aioobe
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());
11
Petar Minchev

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

Что-то вроде этого : 

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());
3
Swagatika

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

2
Trefex

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

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);
1
Arif Nadeem
package arrays;
import Java.util.Scanner;

public class Arrays {
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);

        int j;
        System.out.println("How much values u want to enter : -");
        j = input.nextInt();

        String array[]= new String[j];

        for(int i=0;i<j;i++)
        {
            System.out.println("Enter The index "+ (i+1) +" Value");
            array[i] = input.next();
        }
        input.close();
        System.out.println("Thanks Thats It \n");

        System.out.println("The values u Entered \n");
        for (int k=0;k<j;k++)
        {
            System.out.println("Enterd values are : - "+ array[k]);
        }
    }
}

Теперь мне нужно ввести два слова наподобие этого : - Sibi haseb, но оно показывает только sibi. Как я могу заставить это показать их обоих?

1
sibi HaSeb
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 a r e n d r a

H a r e n d r a

0
Harendra Kr. Jadon

Я создаю метод 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
Balram Dixit

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

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));
    }
}
0
fbjon