আমার একটা আছে String[]
String[] name = {"amit", "rahul", "surya"};
আমি ইন ক্লজের অভ্যন্তরে বর্গ কোয়েরিতে প্যারামিটার হিসাবে নামটি প্রেরণ করতে চাই যাতে আমি কীভাবে বিন্যাসে রূপান্তর করব
'amit','rahul','surya'
আমার একটা আছে String[]
String[] name = {"amit", "rahul", "surya"};
আমি ইন ক্লজের অভ্যন্তরে বর্গ কোয়েরিতে প্যারামিটার হিসাবে নামটি প্রেরণ করতে চাই যাতে আমি কীভাবে বিন্যাসে রূপান্তর করব
'amit','rahul','surya'
উত্তর:
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 "";
}
String.join(...)বা এতগুলি উত্স রেখা লেখার দরকার আছে কেন TextUtils.join(...)?
হয় নিজেই একটি সাধারণ পদ্ধতি লিখুন, বা সেখানে বিভিন্ন ইউটিলিটিগুলির একটি ব্যবহার করুন।
ব্যক্তিগতভাবে আমি অ্যাপাচি স্ট্রিংগটিলগুলি ব্যবহার করি ( স্ট্রিংউটিলস.জাইন )
সম্পাদনা: জাভা 8-এ, আপনার আর এগুলি লাগবে না:
String joined = String.join(",", name);
StringUtils.join(names,',');
String list = "'" + StringUtils.join(names,"','") + "'";এটি আপনাকে এসকিউএল অনুরোধের দ্বারা প্রয়োজনীয় একক উদ্ধৃতি দেবে।
TextUtils.join(",", stringArrayOfEmails)
অ্যান্ড্রয়েড বিকাশকারীরা সম্ভবত TextUtils.join খুঁজছেন
অ্যান্ড্রয়েড ডক্স: http://developer.android.com/references/android/text/TextUtils.html
কোড:
String[] name = {"amit", "rahul", "surya"};
TextUtils.join(",",name)
দুর্দান্ত এবং সহজ: তবে জাভা 8 প্রয়োজনীয়!
String result = String.join(",", names);
StringBuilder sb = new StringBuilder();
for (String n : name) {
if (sb.length() > 0) sb.append(',');
sb.append("'").append(n).append("'");
}
return sb.toString();
TextUtils.join(...)? আমার ধারণা এক লাইনের কোডটি পাঁচটির চেয়ে আরও ভাল এবং সহজ is
আপনি org.apache.commons.lang.StringUtilsজাভাতে স্ট্রিং অ্যারে থেকে কমা বিচ্ছিন্ন ফলাফল গঠনের জন্য এপিআই ব্যবহার করতে পারেন ।
StringUtils.join(strArr,",");
আপনি পেয়ারা লাইব্রেরি ব্যবহার করে এটি সহজতর করতে পারেন:
String[] name = {"amit", "rahul", "surya"};
String str = "'" + Joiner.on(",").skipNulls().join(name)
.replace(",", "','") + "'";
"amit,rahul,surya"?
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();
}
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);
}
substring(1), তবে কি হবে array.length == 0?
আমি এটি ব্যবহার করি
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();
}
ব্যবহারের StringUtils.joinফাংশন: উদা
String myCsvString = StringUtils.join(myList, ",")
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 );
কোডটি যেমন প্রদর্শিত হতে পারে তেমন লোভনীয় এবং "শীতল", ব্যবহার করবেন না 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না থাকলে।
আপনি এ জাতীয় সরল ক্রিয়াকলাপের জন্য স্ট্রিংবিল্ডারকে নাও দেখতে চাইতে পারেন। অনুগ্রহ করে নোট করুন যে আমি আপনার অ্যারের নাম পরিবর্তন করেছি বিষয়বস্তুর সাথে সঙ্গতি রেখে নাম থেকে নামগুলি :
String[] names = {"amit", "rahul", "surya"};
String namesString = "";
int delimeters = (names.size() - 1);
for (String name : names)
namesString += (delimeters-- > 0) ? "'" + name + "'," : "'" + name + "'";
দুটি লাইন (ঘোষণা ব্যতীত; 'ফাইনালস্ট্রিং' প্রথমে খালি স্ট্রিংয়ের সমান হিসাবে ঘোষণা করা উচিত), যদি আপনি () লুপের জন্য উল্লম্বভাবে ফাঁক দেওয়ার বিষয়ে খুব বেশি যত্ন না করেন:
for (int i = 0; i<string_array.length; i++) {finalstring += string_array[i]+",";}
finalstring = finalstring.substring(0,finalstring.length()-1);
দুটি লাইন, আপনি সম্পন্ন করেছেন। :)
এখানে একটি অ্যারে বিভক্ত করার জন্য এবং আপনার কাস্টম ডিলিমিটারটি ব্যবহার করে একটি ইউটিলিটি পদ্ধতি রয়েছে
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;
}
আপনার অ্যারে টাইপের স্যুট করতে দ্বিতীয় যুক্তির প্রকারটি পরিবর্তন করুন
পূর্ববর্তী জাভা 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);
এটি আমার সহায়ক !!!
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();
}
String[] name = {"O'Neill"};