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


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.