मेरे पास एक है String[]
String[] name = {"amit", "rahul", "surya"};
मैं इनवॉइस के अंदर sql क्वेरी में पैरामीटर के रूप में नाम भेजना चाहता हूं ताकि मैं एक प्रारूप में कैसे परिवर्तित करूं
'amit','rahul','surya'
मेरे पास एक है String[]
String[] name = {"amit", "rahul", "surya"};
मैं इनवॉइस के अंदर sql क्वेरी में पैरामीटर के रूप में नाम भेजना चाहता हूं ताकि मैं एक प्रारूप में कैसे परिवर्तित करूं
'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(...)?
या तो स्वयं एक सरल विधि लिखें, या वहाँ से बाहर विभिन्न उपयोगिताओं में से एक का उपयोग करें।
व्यक्तिगत रूप से मैं Apache StringUtils ( StringUtils.join ) का उपयोग करता हूं
संपादित करें: जावा 8 में, आपको इसकी बिल्कुल भी आवश्यकता नहीं है:
String joined = String.join(",", name);
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
कोड:
String[] name = {"amit", "rahul", "surya"};
TextUtils.join(",",name)
अच्छा और सरल: लेकिन java8 की आवश्यकता!
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(...)? मुझे लगता है कि एक लाइन कोड पांच लोगों की तुलना में बेहतर और सरल है।
आप 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?
उपयोग 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 , क्योंकि ये स्ट्रिंग समवर्ती समस्या से पीड़ित होंगे
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"};