2013-07-01 5 views
7

Ho una lista, come di seguitoCome aggiungere o inserire '(apici) per ogni stringa in un elenco in cui le stringhe sono separati da virgole utilizzando Java

[url1,url2,url3,url4] 

Questo elenco sarà basato su selezione multipla da menu a discesa dell'HTML. Quindi elenca la dimensione, ad esempio, gli elementi della lista cambiano in modo dinamico. Il mio problema è che non riesco a ottenere la logica per ottenere le virgolette singole alle stringhe. Voglio la lista di stringhe di cui sopra da visualizzare come

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

Cioè virgolette singole (') per ogni corda e virgole (,) non dovrebbero essere eliminati. Per favore aiutami a raggiungere questo obiettivo usando Java.

+3

Si prega di condividere quello che hai provato. – sidgate

+0

Non è possibile ottenere la logica per mantenere le virgolette.Ma in grado di rimuovere [e] utilizzando replace() – user2515189

+3

Stiamo parlando di un 'Elenco ' contenente le variabili "url" (in tal caso verrebbero visualizzate tra double- virgolette) o un 'String' che rappresenta la tua lista come" [url1, url2, etc] "? – Mena

risposta

6

1) Iterare l'elenco (per/while)

2) Per ogni elementi di elenco accodamento '', (suggerimento:. Utilizzo append() su StringBuilder

3) Tronca/sottostringhe lista per rimuovere l'ultimo, ha aggiunto (Suggerimento: uso sottostringa sulla classe String)

+1

StringBuilder b = new StringBuilder(); Ora b.append ("''") non aggiungerà 'all'inizio e' alla fine della stringa a destra ?? – user2515189

3

Se avete i vostri elementi di un array, si può fare qualcosa di simile:

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] + "'"); 
     } 
    } 
} 
1

Prova questa

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); 
13
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,"','") + "'"; 

risultato è: 'mio', 'nome', 'è',

3

Modo più veloce ed efficiente 'baybora' per fare questo

Ex.

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

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

Inoltre è possibile utilizzare Java8 funzionalità integrate per le biblioteche concatenazione di stringhe e di terze parti per il confezionamento di ogni stringa tra virgolette.

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

avere un file Util.java o se si dispone già di tutti i comuni util roba poi basta aggiungere questi metodi statici

per singola citazione

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

per il doppio citazioni

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

È possibile utilizzare la classe di utilità Java 8 java.util.StringJoiner.

Questa classe è stata specificatamente introdotta per formattare l'elenco dei valori stringa.

Ad esempio:

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

uscita

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

Si noti che, nel costruttore di StringJoiner,

StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix) 

stiamo passando apostrofo come prefisso e suffisso per soddisfare il tuo requisito specifico

6

utilizzando Java 8 Streams:

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

Stream.of(array).collect(Collectors.joining("','", "'", "'")); 
3

per la lista è possibile convertire questo da Java 8

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