回答:
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(...)orを使用できるのに、なぜそれほど多くのソース行を書く必要があるのTextUtils.join(...)ですか?
簡単なメソッドを自分で書くか、そこにあるさまざまなユーティリティのいずれかを使用します。
個人的には、Apache StringUtils(StringUtils.join)を使用しています
編集:Java 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(...)か?1行のコードは5行のコードよりも優れており、シンプルだと思います。
org.apache.commons.lang.StringUtilsAPIを使用して、Javaの文字列配列からコンマ区切りの結果を形成することもできます。
StringUtils.join(strArr,",");
Guavaライブラリを使用してそれを簡略化することもできます:
String[] name = {"amit", "rahul", "surya"};
String str = "'" + Joiner.on(",").skipNulls().join(name)
.replace(",", "','") + "'";
"amit,rahul,surya"ですか?
StringBuilderString []を使用して繰り返し、各Stringをそれに追加します。
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いいですか?
USE 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そうでない場合はを使用してください。
そのような単純な操作のためにStringBuilderを生成しないようにすることもできます。コンテンツの整合性を保つために、配列の名前を名前から名前に変更したことに注意してください。
String[] names = {"amit", "rahul", "surya"};
String namesString = "";
int delimeters = (names.size() - 1);
for (String name : names)
namesString += (delimeters-- > 0) ? "'" + name + "'," : "'" + name + "'";
以下は、配列を分割してカスタム区切り文字を配置するユーティリティメソッドです。
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;
}
2番目の引数の型を配列型に合わせて変更します
以前のJava 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"};