web-dev-qa-db-fra.com

Ajouter des espaces entre les caractères d'une chaîne en Java?

Je veux juste ajouter un espace entre chaque caractère d'une chaîne. Quelqu'un peut-il m'aider à comprendre comment faire cela?

Par exemple. étant donné "JAYARAM", j'ai besoin de "J A Y A R A M" comme résultat.

21
Jey

À moins que vous ne vouliez parcourir la chaîne et le faire "manuellement", vous pouvez le résoudre comme suit:

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

Ceci remplace toutes les "sous-chaînes vides" par un espace, puis élimine les espaces de début/fin.

ideone.com démonstration


Une solution alternative utilisant des expressions régulières:

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

En gros, il dit "Remplacez tous les caractères (sauf le dernier) par le caractère lui-même suivi d'un espace".

ideone.com démonstration

Documentation de ...

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

Parcourez les caractères de la chaîne et lors du stockage dans un nouveau tableau/chaîne, vous pouvez ajouter un espace avant d'ajouter chaque caractère. 

Quelque chose comme ça : 

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

Faites exploser votre chaîne en un tableau de caractères, passez en boucle sur le tableau de caractères et créez une nouvelle chaîne en succédant à un caractère par un espace.

2
Trefex

Cela fonctionnerait pour insérer un caractère quelconque dans une position particulière de votre chaîne.

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();
}

Alors appelle ça comme ça 

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]);
        }
    }
}

Maintenant, je dois entrer deux mots comme celui-ci : - Sibi haseb, mais il ne montre que sibi. Comment puis-je l'obtenir pour montrer les deux?

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  "));
}

Cela donne comme résultat l'utilisation suivante de l'un des éléments ci-dessus:

H a n e r a

H a n e r a

0
Harendra Kr. Jadon

Je crée une méthode Java à cet effet avec un caractère dynamique 

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

C'est le même problème que de réunir un tableau avec des virgules. Cette version ne crée correctement que des espaces entre les caractères et évite une branche inutile dans la boucle:

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