স্ট্রিংকে [] জাভাতে কমা দ্বারা পৃথক করা স্ট্রিংয়ে রূপান্তর করুন


109

আমার একটা আছে String[]

String[] name = {"amit", "rahul", "surya"};

আমি ইন ক্লজের অভ্যন্তরে বর্গ কোয়েরিতে প্যারামিটার হিসাবে নামটি প্রেরণ করতে চাই যাতে আমি কীভাবে বিন্যাসে রূপান্তর করব

'amit','rahul','surya'

18
কি সম্পর্কেString[] name = {"O'Neill"};
— বার্ট কায়ার্স

উত্তর:


31
if (name.length > 0) {
    StringBuilder nameBuilder = new StringBuilder();

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

10
তাহলে আমি একগুচ্ছ চেক লিখতাম। আমি কেবল ধারণাটি ব্যাখ্যা করছি, সংরক্ষণের সমস্ত উদাহরণ দিচ্ছি না।
— নিকো হুইসামেন

3
আবার, ধারণা ... এবং ডাউন ভোটের জন্য ধন্যবাদ। তবে আপনি সেখানে যান, এটি স্থির করুন।
— নিকো হুইসামেন

ধন্যবাদ বন্ধু আপনি আমার দিনটি বাঁচান তবে আপনি যদি কিছু মনে করেন না তবে আপনি @ বার্ট কায়ার্সের উত্তরও দিতে পারেন কারণ আমি সেই পরিস্থিতি পেতে পারি এবং আমি প্রোগ্রামিং প্লাজে নতুন
— দীপক কুমার

7
ওহহ, কেন আপনি যদি সহজেই ব্যবহার করতে পারেন String.join(...)বা এতগুলি উত্স রেখা লেখার দরকার আছে কেন TextUtils.join(...)?
— ইউজিন ব্রুসভ

2
@ ইউজেন ব্রুসভ আমি যাব এবং অনুমান করতে চলেছি কারণ জাভা 8 প্রকাশের অনেক আগে ২০১১ সালে উত্তর পোস্ট করা হয়েছিল;)
— নিকো হুইসামেন

211

হয় নিজেই একটি সাধারণ পদ্ধতি লিখুন, বা সেখানে বিভিন্ন ইউটিলিটিগুলির একটি ব্যবহার করুন।

ব্যক্তিগতভাবে আমি অ্যাপাচি স্ট্রিংগটিলগুলি ব্যবহার করি ( স্ট্রিংউটিলস.জাইন )

সম্পাদনা: জাভা 8-এ, আপনার আর এগুলি লাগবে না:

String joined = String.join(",", name);

3
একদম ঠিক! এমনকি আপনি আপনার নিজের সীমানা নির্ধারণ করতে পারেন:StringUtils.join(names,',');
— পাগলামি

5
String list = "'" + StringUtils.join(names,"','") + "'";এটি আপনাকে এসকিউএল অনুরোধের দ্বারা প্রয়োজনীয় একক উদ্ধৃতি দেবে।
— হাইস্ক্লার্ক

অ্যান্ড্রয়েডের জন্য:TextUtils.join(",", stringArrayOfEmails)
— প্রতীক বুটানি



47
StringBuilder sb = new StringBuilder();
for (String n : name) { 
    if (sb.length() > 0) sb.append(',');
    sb.append("'").append(n).append("'");
}
return sb.toString();

1
আপনি কী চেষ্টা করেছেন TextUtils.join(...)? আমার ধারণা এক লাইনের কোডটি পাঁচটির চেয়ে আরও ভাল এবং সহজ is
— ইউজিন ব্রুসভ

27

আপনি org.apache.commons.lang.StringUtilsজাভাতে স্ট্রিং অ্যারে থেকে কমা বিচ্ছিন্ন ফলাফল গঠনের জন্য এপিআই ব্যবহার করতে পারেন ।

StringUtils.join(strArr,",");


9

আপনার যদি ইতিমধ্যে নির্ভরতা হিসাবে স্প্রিং ফ্রেমওয়ার্ক থাকে তবে আপনি খুব সাধারণ ব্যবহার পদ্ধতিটিও ব্যবহার করতে পারেন:

org.springframework.util.StringUtils.arrayToCommaDelimitedString(String[] array)

7

আপনি পেয়ারা লাইব্রেরি ব্যবহার করে এটি সহজতর করতে পারেন:

String[] name = {"amit", "rahul", "surya"};
String str = "'" + Joiner.on(",").skipNulls().join(name)
    .replace(",", "','") + "'";

যেখানে আউটপুট আমি কিভাবে পেয়ারা লাইব্রেরি ব্যবহার না: "amit,rahul,surya"?
— কমপ্যাক LE2202x

5

StringBuilderআপনার স্ট্রিং [] এর উপরে ব্যবহার করুন এবং পুনরাবৃত্তি করুন এবং এতে প্রতিটি স্ট্রিং যুক্ত করুন:

public static String convert(String[] name) { 
    StringBuilder sb = new StringBuilder();
    for (String st : name) { 
        sb.append('\'').append(st).append('\'').append(',');
    }
    if (name.length != 0) sb.deleteCharAt(sb.length()-1);
    return sb.toString();
}

4

আপনি এক লাইনের কোড দিয়ে এটি করতে পারেন:

Arrays.toString(strings).replaceAll("[\\[.\\].\\s+]", "");

3
String[] name = {"amit", "rahul", "surya"};


public static String arrayToString(String array[])
{
    if (array.length == 0) return "";
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < array.length; ++i)
    {
        sb.append(",'").append(array[i]).append("'");
    }
    return sb.substring(1);
}

2
আপনি সম্ভবত বোঝাতে চেয়েছিলেন substring(1), তবে কি হবে array.length == 0?
— বার্ট কায়ার্স

2

আমি এটি ব্যবহার করি

public static String convertToCommaSeparated(String[] strings) {
    StringBuffer sb = new StringBuffer("");
    for (int i = 0; strings != null && i < strings.length; i++) {
        sb.append(strings[i]);
        if (i < strings.length - 1) {
            sb.append(',');
        }
    }
    return sb.toString();
}

1

ব্যবহারের StringUtils.joinফাংশন: উদা

String myCsvString = StringUtils.join(myList, ",")

1
পূর্বে একাধিকবার পোস্ট করা উত্তর কেন পোস্ট করবেন?
— চার্লস গুডউইন

1
String[] paramIdIdList={"P001","P002","P003"};

StringBuilder builder = new StringBuilder();
            for(String paramId : paramIdIdList) {
                builder.append(paramId+",");
            }
            builder.deleteCharAt(builder.length() -1);
            String paramIds = builder.toString();
System.Out.Println(paramIds );

আপনার কোডটি ঠিক কী করছে তার একটি বিবরণ যুক্ত করুন।
— হিল

স্ট্রিং [] কে কমা দ্বারা পৃথক স্ট্রিংয়ে রূপান্তর করা হচ্ছে
— বিনয়াক

আপনার উত্তরে, কারণ কিছুটা কোড আছে তা ডান জানে। এর চেয়ে বেশি কিছুই কম নয়, তবে এর কোনও সাহায্য নেই।
— হিল

1

কোডটি যেমন প্রদর্শিত হতে পারে তেমন লোভনীয় এবং "শীতল", ব্যবহার করবেন না foldবাreduce স্ট্রিংয়ের বৃহত সংগ্রহগুলি ব্যবহার করবেন না , কারণ এগুলি স্ট্রিং কনটেন্টেশন সমস্যায় ভুগবে will

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না থাকলে।


0
String newNameList=null;

 for(int i = name.length;i>=0;i--){
    if(newNameList==null){
        newNameList = "\'" + name[name.length - i] + "\'";
    }
    else{
        newNameList += ",\'" + name[name.length - i] + "\'";
    }
}

0

আপনি এ জাতীয় সরল ক্রিয়াকলাপের জন্য স্ট্রিংবিল্ডারকে নাও দেখতে চাইতে পারেন। অনুগ্রহ করে নোট করুন যে আমি আপনার অ্যারের নাম পরিবর্তন করেছি বিষয়বস্তুর সাথে সঙ্গতি রেখে নাম থেকে নামগুলি :

String[] names = {"amit", "rahul", "surya"};

String namesString = "";
int delimeters = (names.size() - 1);
for (String name : names)
    namesString += (delimeters-- > 0) ? "'" + name + "'," : "'" + name + "'";

0

দুটি লাইন (ঘোষণা ব্যতীত; 'ফাইনালস্ট্রিং' প্রথমে খালি স্ট্রিংয়ের সমান হিসাবে ঘোষণা করা উচিত), যদি আপনি () লুপের জন্য উল্লম্বভাবে ফাঁক দেওয়ার বিষয়ে খুব বেশি যত্ন না করেন:

for (int i = 0; i<string_array.length; i++) {finalstring += string_array[i]+",";}
finalstring = finalstring.substring(0,finalstring.length()-1);

দুটি লাইন, আপনি সম্পন্ন করেছেন। :)


0

এখানে একটি অ্যারে বিভক্ত করার জন্য এবং আপনার কাস্টম ডিলিমিটারটি ব্যবহার করে একটি ইউটিলিটি পদ্ধতি রয়েছে

String.replace(String,String)
Arrays.toString(Object[])

এটা এখানে :

public static String toString(String delimiter, Object[]array){
    String s = "";

    // split array
    if (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;
}

আপনার অ্যারে টাইপের স্যুট করতে দ্বিতীয় যুক্তির প্রকারটি পরিবর্তন করুন


0

এটি এটি করার একটি অনুকূলিত উপায়

StringBuilder sb = new StringBuilder();
for (String n : arr) { 
    sb.append("'").append(n).append("',");
}
if(sb.length()>0)
    sb.setLength(sbDiscrep.length()-1);
return sb.toString();

0

পূর্ববর্তী জাভা 8 সমাধানের জন্য এক্সটেনশন

String result = String.join(",", name);

অ্যারের মানগুলির জন্য আপনার যদি উপসর্গ বা / এবং প্রত্যয় প্রয়োজন হয়

 StringJoiner joiner = new StringJoiner(",");
 for (CharSequence cs: name) {
     joiner.add("'" + cs + "'");
 }
 return joiner.toString();

বা সাধারণ পদ্ধতি ধারণা

  public static String genInValues(String delimiter, String prefix, String suffix, String[] name) {
    StringJoiner joiner = new StringJoiner(delimiter);
    for (CharSequence cs: name) {
      joiner.add(prefix + cs + suffix);
    }
    return joiner.toString();
  }

উদাহরণ স্বরূপ

For Oracle i need "id in (1,2,3,4,5)" 
then use genInValues(",", "", "", name);
But for Postgres i need "id in (values (1),(2),(3),(4),(5))"
then use genInValues(",", "(", ")", name);

-1

এটি আমার সহায়ক !!!

private static String convertArrayToString(String [] strArray) {
            StringBuilder builder = new StringBuilder();
            for(int i = 0; i<= strArray.length-1; i++) {
                if(i == strArray.length-1) {
                    builder.append("'"+strArray[i]+"'");
                }else {
                    builder.append("'"+strArray[i]+"'"+",");
                }
            }
            return builder.toString();
        }

3
আপনার উত্তরের জন্য কিছু প্রসঙ্গ সরবরাহ করুন।
— ম্যাথিউ ব্রুচার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.