&tag(CSharp/文字列); *目次 [#oba543bc] #contents *参考情報 [#nd385570] *比較 [#yb0d1c7d] **Equalsではなく==を使う [#z7f142ca] -C#のstringの"=="演算子は等値比較を行うので通常はこれを使えば良い(JavaはEqualsを使うので間違えないように)。 -型チェックが行われるし、呼び出し側がnullでも例外が発生しないなどの利点がある。 -ただし少し遅い(?)。またobject型の変数に代入して比較すると参照の値が等しいかどうかで比較されてしまう。ここだけ注意が必要(以下Stack Overflowのサンプルより) #pre{{ // Avoid getting confused by interning object x = new StringBuilder("hello").ToString(); object y = new StringBuilder("hello").ToString(); if (x.Equals(y)) // Yes // 参照の比較が行われる if (x == y) // No string xs = (string) x; string ys = (string) y; // ==(string, string)が呼ばれる if (xs == ys) // Yes{ }} ''※参考リンク'' -[[C# では文字列の比較に Equals を使うな:http://sonic64.com/2006-02-02.html]] -[[スィンプロ (sinproject) [C#] 文字列の比較は Equalsメソッドではなく ==演算子で行う:http://sinproject.blog47.fc2.com/blog-entry-38.html]] -[[c# - Are string.Equals() and == operator really same? - Stack Overflow:http://stackoverflow.com/questions/3678792/are-string-equals-and-operator-really-same]] *整形 [#ce02829c] **書式指定でフォーマットする。 [#oe2443be] String.Format(format, arg1, arg2...)を使う。 #pre{{ String.Format("xの値は{0}です。yの値は{1}です。", x, y); }} *変換 [#vf7c03ca] **数値へ変換する [#s0f2259b] ***Parse()を使用する [#d8828c16] -int/bool/doubleなどプリミティブ型のParseメソッドに文字列を渡すことができる。変換に失敗すると例外が発生するので例外処理が必要になる。 int a = int.Parse("2"); bool b = bool.Parse("True"); dboule c = double.Parse("10.22"); ***TryParse()を使用する [#jc80f0c9] -例外を発生さえずに処理したい場合TryParseが便利。変換が成功したかどうかは戻り値で判定できる。 int v; bool result = int.TryParse("2", v); ***ConvertクラスのToXXX()メソッドを使用する [#ra4c69d1] -Parse()メソッドのように例外が発生する。ただしnullの場合は0が帰ってくる。 i = Convert.ToInt32(s); **リストを結合する [#x4bf3823] -[[Make CSV from list of string in LINQ - Stack Overflow:http://stackoverflow.com/questions/2758850/make-csv-from-list-of-string-in-linq]]…LISTからCSV形式の文字列を生成する。 #pre{{ public static string ToCsv<T>(this IEnumerable<T> source) { if (source == null) throw new ArgumentNullException("source"); return string.Join(",", source.Select(s => s.ToString()).ToArray()); } }}