if(name.length >0){StringBuilder nameBuilder =newStringBuilder();for(String n : name){
nameBuilder.append("'").append(n.replace("'","\\'")).append("',");// can also do the following// nameBuilder.append("'").append(n.replace("'", "''")).append("',");}
nameBuilder.deleteCharAt(nameBuilder.length()-1);return nameBuilder.toString();}else{return"";}
Тогда бы выписал кучу чеков. Я просто объясняю концепцию, а не привожу пример сохранения всего.
Nico Huysamen 08
3
Опять же, концепции ... И спасибо за голосование против. Но вот, исправил.
Nico Huysamen 08
спасибо дружище вы сохраните мой день , но если вы не возражаете , вы можете также дать ответ @Bart Kiers , потому что я мог бы получить эту ситуацию , и я новичок в программировании плз
Дипак Кумар
7
Ооо, зачем писать так много строк исходного кода, если можно просто использовать String.join(...)или TextUtils.join(...)?
Евгений Брюсов
2
@EugeneBrusov Я пойду и угадаю, потому что ответ был опубликован в 2011 году задолго до выпуска Java 8;)
Нико Хуйсамен
211
Либо напишите простой метод самостоятельно, либо воспользуйтесь одной из различных утилит.
String[] name ={"amit","rahul","surya"};publicstaticString arrayToString(String array[]){if(array.length ==0)return"";StringBuilder sb =newStringBuilder();for(int i =0; i < array.length;++i){
sb.append(",'").append(array[i]).append("'");}return sb.substring(1);}
Добавьте описание того, что именно делает ваш код.
Hille
Преобразование String [] в строку, разделенную запятыми
Винаяк
В вашем ответе, потому что право знает, что есть какой-то код. Ни больше, ни меньше, но это не поможет.
Hille
1
Как может показаться заманчивым и «круто» , как код, не использовать foldилиreduce на больших коллекций строк, так как они будут страдать от проблемы конкатенации
String[] strings ={"foo","bar","baz"};Optional<String> result =Arrays.stream(strings).reduce((a, b)->String.format("%s,%s", a, b));System.out.println(result.get());
Вместо этого, согласно другим ответам, используйте, String.join()если у вас уже есть коллекция, или, StringBuilderесли нет.
Вы также можете не создавать StringBuilder для такой простой операции. Обратите внимание, что я изменил имя вашего массива с имени на имена для соответствия содержания:
String[] names ={"amit","rahul","surya"};String namesString ="";int delimeters =(names.size()-1);for(String name : names)
namesString +=(delimeters-->0)?"'"+ name +"',":"'"+ name +"'";
Две строки (исключая объявления; 'finalstring' изначально должна быть объявлена равной пустой строке), если вас не особо заботит вертикальный интервал цикла for ():
for(int i =0; i<string_array.length; i++){finalstring += string_array[i]+",";}
finalstring = finalstring.substring(0,finalstring.length()-1);
publicstaticString toString(String delimiter,Object[]array){String s ="";// split arrayif(array !=null&& array.length >0){
s =Arrays.toString(array).replace("[","").replace("]","");}// place delimiter (notice the space in ", ")if(delimiter !=null){
s = s.replace(", ", delimiter);}return s;}
измените второй тип аргумента, чтобы он соответствовал вашему типу массива
String[] name = {"O'Neill"};
Ответы:
источник
String.join(...)
илиTextUtils.join(...)
?Либо напишите простой метод самостоятельно, либо воспользуйтесь одной из различных утилит.
Лично я использую apache StringUtils ( StringUtils.join )
edit: в Java 8 вам это больше не нужно:
источник
StringUtils.join(names,',');
String list = "'" + StringUtils.join(names,"','") + "'";
это даст вам одинарные кавычки, необходимые для запроса SQL.TextUtils.join(",", stringArrayOfEmails)
Разработчики Android, вероятно, ищут TextUtils.join
Документы Android: http://developer.android.com/reference/android/text/TextUtils.html.
Код:
источник
Красиво и просто: но требуется java8!
источник
источник
TextUtils.join(...)
? Думаю, однострочный код даже лучше и проще пяти.Вы также можете использовать
org.apache.commons.lang.StringUtils
API для формирования результата, разделенного запятыми, из массива строк в Java.StringUtils.join(strArr,",");
источник
Если у вас уже есть Spring Framework в качестве зависимости, вы также можете использовать очень простой метод util:
источник
Вы также можете упростить его, используя библиотеку Guava:
источник
"amit,rahul,surya"
:?используйте
StringBuilder
и перебирайте свой String [], и добавьте в него каждую строку:источник
Вы можете сделать это с помощью одной строчки кода:
источник
источник
substring(1)
, а что еслиarray.length == 0
?я использую это
источник
ИСПОЛЬЗОВАТЬ
StringUtils.join
функцию: напримеристочник
источник
Как может показаться заманчивым и «круто» , как код, не использовать
fold
илиreduce
на больших коллекций строк, так как они будут страдать от проблемы конкатенацииВместо этого, согласно другим ответам, используйте,
String.join()
если у вас уже есть коллекция, или,StringBuilder
если нет.источник
источник
Вы также можете не создавать StringBuilder для такой простой операции. Обратите внимание, что я изменил имя вашего массива с имени на имена для соответствия содержания:
источник
Две строки (исключая объявления; 'finalstring' изначально должна быть объявлена равной пустой строке), если вас не особо заботит вертикальный интервал цикла for ():
Две строчки, готово. :)
источник
вот служебный метод для разделения массива и помещения вашего настраиваемого разделителя, используя
вот :
измените второй тип аргумента, чтобы он соответствовал вашему типу массива
источник
Это был бы оптимизированный способ сделать это
источник
Расширение для предыдущего решения Java 8
Если вам нужен префикс и / или суффикс для значений массива
Или концепция простого метода
Например
источник
Это моя помощь !!!
источник