web-dev-qa-db-fra.com

Comment ajouter ou insérer des guillemets simples pour chaque chaîne d'une liste dans laquelle les chaînes sont séparées par des virgules à l'aide de Java

J'ai une liste comme ci-dessous

[url1,url2,url3,url4] 

Cette liste sera basée sur une sélection multiple à partir de la liste déroulante HTML. Donc, la taille de la liste, c’est-à-dire que les éléments de la liste changent dynamiquement. Mon problème est que je ne parviens pas à obtenir la logique permettant d’obtenir des guillemets simples aux chaînes. Je souhaite que la liste de chaînes ci-dessus soit affichée sous la forme suivante:

'url1','url2','url3','url4' 

Il s’agit de guillemets simples (') pour chaque chaîne et les virgules (,) ne doivent pas être éliminées. S'il vous plaît, aidez-moi à réaliser cela en utilisant Java.

10
user2515189

1) Itérer la liste (pour/tant que)

2) Pour chaque élément de la liste append '', (conseil: utilisez append () sur StringBuilder 

3) tronquer/sous-chaîne la liste pour supprimer le dernier élément ajouté (astuce: utiliser une sous-chaîne sur la classe String)

6
Optional
    import org.Apache.commons.lang.StringUtils;
    ...
    ...
    String arr[] = new String[4];
    arr[0] = "my";
    arr[1] = "name";
    arr[2] = "is";
    arr[3] = "baybora";

    String join = "'" + StringUtils.join(arr,"','") + "'";

le résultat est: 'mon', 'nom', 'est', 'baybora'

15
baybora.oren

Vous pouvez utiliser la classe d'utilitaires Java 8 Java.util.StringJoiner.

Cette classe a été spécifiquement introduite pour formater une liste de valeurs de chaîne.

Par exemple:

StringJoiner joiner = new StringJoiner("','", "'", "'");
        joiner.add("url1");
        joiner.add("url2");
        joiner.add("url3");
        joiner.add("url4");
        System.out.println(joiner);

Sortie

'url1','url2','url3','url4'

Notez que, dans le constructeur de StringJoiner,

StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)

nous passons entre guillemets simples comme préfixe et suffixe pour répondre à vos besoins spécifiques.

10
Omkar

pour la liste, vous pouvez convertir ceci par Java 8

list.stream().collect(Collectors.joining("','", "'", "'"));
8

Utilisation de Java 8 Streams:

String[] array = {"url1", "url2", "url3", "url4"}

Stream.of(array).collect(Collectors.joining("','", "'", "'"));
8
Camilo Silva

Le moyen le plus rapide et efficace de le faire 

Ex.

ArrayList<String> a=[url1,url2,url3,url4];

String s  ="'"+a.toString().replace("[","").replace("]", "").replace(" ","").replace(",","','")+"'";
4
Harshal

Si vous avez vos éléments dans un tableau, vous pouvez faire quelque chose comme ceci:

import Java.util.ArrayList;

class Test1{
    public static void main(String[] args) {
        String[] s = {"url1","url2","url3","url4"};

        ArrayList<String> sl = new ArrayList<String>();
        for (int i = 0; i < s.length; i++) {
            sl.add("'" + s[i] + "'"); 
        }
    }
}
3
Goatcat

Avoir un fichier Util.Java ou si vous avez déjà tous les trucs util courants, ajoutez simplement ces méthodes statiques 

pour devis simple

public static String singleQuote(String str) {
        return (str != null ? "'" + str + "'" : null);
}

pour les guillemets doubles

public static String doubleQuotes(String str) {
        return (str != null ? "\"" + str + "\"" : null);
}
2
Java_Fire_Within

Essaye ça

    String[] str = {"url1","url2","url3","url4"};
    ArrayList<String> strList = new ArrayList<String>();
    for (String k:str)
        strList.add("'" +k+ "'");
    System.out.println("Printing the list");
    for(String k:strList)
        System.out.println(k);
1
Rakesh KR

Vous pouvez également utiliser les fonctionnalités intégrées Java8 pour la concaténation de chaînes et les bibliothèques tierces pour encapsuler chaque chaîne entre guillemets.

import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.util.StringUtils;

import Java.util.ArrayList;
import Java.util.List;
import Java.util.StringJoiner;

@RunWith(MockitoJUnitRunner.class)
public class StringJoinerTest {
    @Test
    public void testStringJoiner() {

        //init test data
        String s1 = "team1";
        String s2 = "team2";
        List<String> teams = new ArrayList<>(2);
        teams.add(s1);
        teams.add(s2);

        //configure StringJoiner
        //when some values will be added to joiner it will return string started with prefix "(" an finished with suffix ")"
        //between prefix and suffix values will be separated with delimiter ", "
        StringJoiner teamNames = new StringJoiner(", ", "(", ")");
        //if nothing has been added to the joiner it will return  this value ('')
        teamNames.setEmptyValue("(\'\')");

        //fill joiner with data
        for (String currentString : teams) {
            //if you need to wrap each string in single quotes you can do this via org.Apache.commons.lang3.StringUtils#wrap
            // or org.springframework.util.StringUtils#quote
            teamNames.add(StringUtils.quote(currentString));
        }

        System.out.println(teamNames.toString());
    }
}
1
Workin_Man