2 votes

Comment continuer à stocker des données dans une chaîne de caractères jusqu'à ce qu'un symbole apparaisse dans la liste des tableaux ?

J'essaie de stocker les données d'une liste de tableaux dans des chaînes de caractères jusqu'à ce qu'un symbole apparaisse. Par exemple, il y a un ArrayList avec les éléments suivants :

{Start, at , - , Bob, amazing, gold, -, Peter, pan, Bright, shine, - , Sugar, shack -, lol, -}

J'ai mis des noms aléatoires pour la démonstration, mais quoi qu'il en soit, j'essaie de stocker des données dans une chaîne de caractères jusqu'à ce qu'elle voie un symbole. Ainsi, pour la liste ci-dessus, les données seront stockées dans plusieurs chaînes de la manière suivante :

String first = "Start at"
String second = "Bob amazing gold"
String third  = "Peter pan bright shine"
String forth = "Sugar shack"
String fifth = "lol"

La liste ci-dessus n'est qu'un exemple. J'essaie de mettre en œuvre un code qui fonctionne avec n'importe quelle liste. Il n'y a donc pas de modèle. Le code doit conserver les données fortes dans une chaîne de caractères jusqu'à ce qu'il voie un symbole. Avez-vous des idées sur la façon dont je peux réaliser cela ? Merci de m'en faire part !

1voto

Milgo Points 303

Vous pouvez itérer à travers chaque élément de votre liste et enchaîner les chaînes qui ne contiennent pas de symboles. Vous pouvez ensuite stocker votre résultat dans une liste.

public static void main(String[] args) {

    List<String> wordList = Arrays.asList("Start", "at", "-", "Bob", "amazing", "gold", "-", "Peter", "pan", "Bright", "shine", "-", "Sugar", "shack", " -", "lol", "-");
    List<String> result = new ArrayList<>();
    StringBuilder builder = new StringBuilder();
    for (String word : wordList) {
        if (isSymbol(word)) {
            result.add(builder.toString());
            builder = new StringBuilder();
        } else {
            if (builder.length() != 0) {
                builder.append(' ');
            }
            builder.append(word);
        }
    }
    if (builder.length() > 0) {
        result.add(builder.toString());
    }
    System.out.println(result);
}

public static boolean isSymbol(String name) {
    return name.matches("[ -]+");
}

1voto

Cela pourrait être plus simple :

public static void main(String[] args) {
    List<String> wordList = Arrays.asList("Start", "at", "-", "Bob", "amazing", "gold", "-", "Peter", "pan", "Bright", "shine", "-", "Sugar", "shack", " -", "lol", "-");
    List<String> result = new ArrayList<>();
    StringBuilder builder = new StringBuilder();

    for (String word : wordList) {
        builder.append(word).append(" ");
    }

    String[] splits = builder.toString().split(" -");
    result.addAll(Arrays.asList(splits));

    System.out.println(result);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X