タグ付けされた質問 「stringbuilder」

Stringbuilderは、Javaおよび.NETFrameworkでテキストデータを操作するための便利で効率的な方法を提供するクラスです。


18
JavaのtoString()におけるStringBuilderとStringの連結
toString()以下の2つの実装がある場合、どちらが推奨されますか。 public String toString(){ return "{a:"+ a + ", b:" + b + ", c: " + c +"}"; } または public String toString(){ StringBuilder sb = new StringBuilder(100); return sb.append("{a:").append(a) .append(", b:").append(b) .append(", c:").append(c) .append("}") .toString(); } ? さらに重要なことは、プロパティが3つしかない場合、違いはないかもしれませんが、どの時点で+concatから StringBuilder?に切り替えますか?

17
StringBuilderの最後の文字を削除しますか?
コレクションをループして、区切り文字で区切られた各データの文字列を作成する必要がある場合、常に最後に余分な区切り文字が必要になります。たとえば、 for (String serverId : serverIds) { sb.append(serverId); sb.append(","); } のようなものを与えます:serverId_1、serverId_2、serverId_3、 StringBuilderの最後の文字を削除したいと思います(このループの後も必要なので、変換せずに)。

9
StringBuilderに改行を追加する方法
私はStringBuilderオブジェクトを持っています、 StringBuilder result = new StringBuilder(); result.append(someChar); 次に、改行文字をに追加しますStringBuilder。どうすればできますか? result.append("/n"); 動作しません。それで、ユニコードを使って改行を書くことを考えていました。これは役に立ちますか?もしそうなら、どうすれば追加できますか?



12
StringBuilderと同じくらい効率的なString.Formatです。
これを行うC#の文字列ビルダーがあるとします。 StringBuilder sb = new StringBuilder(); string cat = "cat"; sb.Append("the ").Append(cat).(" in the hat"); string s = sb.ToString(); それは次のものと同じくらい効率的ですか、それとももっと効率的ですか? string cat = "cat"; string s = String.Format("The {0} in the hat", cat); もしそうなら、なぜですか? 編集 いくつか興味深い答えを見つけた後、私はおそらく私が求めていることをもう少し明確にすべきであることに気づきました。文字列を連結する方が速いのではなく、ある文字列を別の文字列に挿入する方が速いのではないかと私はそれほど質問していませんでした。 上記のどちらの場合でも、事前定義されたテンプレート文字列の中央に1つ以上の文字列を挿入します。 混乱させて申し訳ありません


14
ループでStringBuilderを再利用する方が良いですか?
StringBuilderの使用に関するパフォーマンス関連の質問があります。非常に長いループで、私はa StringBuilderを操作して次のような別のメソッドに渡します。 for (loop condition) { StringBuilder sb = new StringBuilder(); sb.append("some string"); . . . sb.append(anotherString); . . . passToMethod(sb.toString()); } StringBuilderすべてのループサイクルでインスタンス化することは良い解決策ですか?そして、次のように、代わりに削除を呼び出す方が良いですか? StringBuilder sb = new StringBuilder(); for (loop condition) { sb.delete(0, sb.length); sb.append("some string"); . . . sb.append(anotherString); . . . passToMethod(sb.toString()); }



6
SQLでStringBuilderを使用する正しい方法
私は私のプロジェクトで次のようなSQLクエリビルドを見つけました: return (new StringBuilder("select id1, " + " id2 " + " from " + " table")).toString(); これStringBuilderはその目的、つまりメモリ使用量の削減を達成していますか? コンストラクタでは '+'(文字列連結演算子)が使用されているので、疑問です。以下のコードのように文字列を使用するのと同じ量のメモリを消費しますか?sを使用しStringBuilder.append()た場合とは異なります。 return "select id1, " + " id2 " + " from " + " table"; 両方のステートメントのメモリ使用量は同じですか?どうか明らかにしてください。 前もって感謝します! 編集: ところで、それは私のコードではありません。古いプロジェクトで見つかりました。また、クエリは私の例のクエリほど小さくありません。:)


9
ベストプラクティス/パフォーマンス:StringBuilder.appendとString.concatの混合
私は、ベストプラクティスとは何か、そしてさまざまなケースで文字列リテラルと変数を連結する理由を理解しようとしています。たとえば、私がこのようなコードを持っている場合 StringBuilder sb = new StringBuilder("AAAAAAAAAAAAA") .append(B_String).append("CCCCCCCCCCC").append(D_String) .append("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE") .append("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"); これはそれを行う方法ですか?この投稿から+、Stringsの演算子がStringBuilderの新しいインスタンスを作成し、オペランドを連結し、String変換を返すことに気付きました。これは、単に呼び出すよりもはるかに多くの作業のよう.append()です。それが本当なら、それは問題外です。しかし、どうString.concat()ですか?.append()すべての連結に使用するのは適切ですか?または、変数の場合、リテラルに追加してもかまい.concat()ませんか? StringBuilder sb = new StringBuilder("AAAAAAAAAAAAA") .append(B_String.concat("CCCCCCCCCCC")).append(D_String .concat("EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE") .concat("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF")); これらの状況を回避するためのベストプラクティスとパフォーマンスの一般的なルールは何ですか?私の仮定は正しい+ですか、それは本当に使用されるべきではありませんか?

12
StringBuilderを使用するのはいつですか?
StringBuilderの利点を理解しています。 しかし、2つの文字列を連結したい場合は、StringBuilderなしで行う方が良い(速い)と思います。これは正しいです? どの時点(文字列の数)でStringBuilderを使用する方が良いですか?
83 c#  stringbuilder 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.