私はデータベースにリンクされたリストからたくさんの情報を検索しています、そして私はウェブサイトに接続されている誰かのために、グループのストリングを作成したいです。
私はこれを使ってテストしますが、これは動的ではないので、本当に悪いことです。
string strgroupids = "6";
今すぐ使いたいです。しかし、返される文字列は1,2,3,4,5,
のようなものです。
groupIds.ForEach((g) =>
{
strgroupids = strgroupids + g.ToString() + ",";
strgroupids.TrimEnd(',');
});
strgroupids.TrimEnd(new char[] { ',' });
,
の後に5
を削除したいのですが、うまくいきません。
strgroupids = strgroupids.Remove(strgroupids.Length - 1);
String.Remove(Int32):
この文字列から、指定された位置から最後の位置までのすべての文字を削除します。
このようにすることについてはどうですか
strgroupids = string.Join( ",", groupIds );
ロット クリーナー。
groupIds
内のすべての要素の間に','
を追加しますが、末尾に','
を配置しません。
C#の文字列は不変です。コード内でstrgroupids.TrimEnd(',');
またはstrgroupids.TrimEnd(new char[] { ',' });
を実行すると、strgroupids
文字列 は変更されません 。
代わりにstrgroupids = strgroupids.TrimEnd(',');
のようなことをする必要があります。
ここ から引用するには:
文字列は不変です。文字列オブジェクトの内容は、作成後に変更することはできません。ただし、構文上、文字列オブジェクトの内容は変更できるように見えます。たとえば、このコードを書くと、コンパイラは実際に新しい文字列を保持する新しい文字列オブジェクトを作成し、その新しいオブジェクトがbに代入されます。文字列 "h"はガベージコレクションに適しています。
拡張メソッドを追加してください。
public static string RemoveLast(this string text, string character)
{
if(text.Length < 1) return text;
return text.Remove(text.ToString().LastIndexOf(character), character.Length);
}
それから:
yourString.RemoveLast(",");
末尾のカンマを削除します。
while (strgroupids.EndsWith(","))
strgroupids = strgroupids.Substring(0, strgroupids.Length - 1);
これは逆ですが、あなたは最初の場所にコンマを追加するコードを書きました。 g
がstring[]
であると仮定して、代わりにstring.Join(",",g)
を使用してください。 g
よりも良い名前を付けてください。
string strgroupids = string.Empty;
groupIds.ForEach(g =>
{
strgroupids = strgroupids + g.ToString() + ",";
});
strgroupids = strgroupids.Substring(0, strgroupids.Length - 1);
ここでのForEach
の使用は通常「間違っている」と考えられていることに注意してください(例えば http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx を読んでください) )
いくつかのLINQを使う:
string strgroupids = groupIds.Aggregate(string.Empty, (p, q) => p + q + ',');
strgroupids = strgroupids.Substring(0, str1.Length - 1);
終了部分文字列なし
string strgroupids = groupIds.Aggregate(string.Empty, (p, q) => (p != string.Empty ? p + "," + q : q.ToString()));
各項目にコンマを追加する代わりに、String.Joinを使用することもできます。
var strgroupids = String.Join(",", groupIds);
これにより、配列内の各要素に区切り文字(この例では "、")between _が追加されます。
Sllの解決策に追加:末尾に空白がある場合に備えて文字列を削除することをお勧めします。
strgroupids = strgroupids.Remove(strgroupids.Trim().Length - 1);
string.Join
の方が優れていますが、もしあなたが 本当に LINQ ForEach
を欲しければ:
var strgroupids = string.Empty;
groupIds.ForEach(g =>
{
if(strgroupids != string.Empty){
strgroupids += ",";
}
strgroupids += g;
});
いくつかのメモ:
string.Join
とforeach
はどちらもこれより優れていますが、非常に遅いアプローチです。,
は追加されないので削除する必要はありません+=
)は文字列に追加するのに便利です。.ToString()
は、文字列以外を連結するときに自動的に呼び出されるので不要です。StringBuilder
を考慮する必要があります。