// string.cs using System; using System.Text; public class StringTest { public static void Main() { ////////// 文字列はUnicode string s1 = "うらにわにはにわにわにはにわにわとりがいる"; String s2 = "うらにわには2わにわには2わにわとりがいる"; Console.WriteLine("s1の長さ:" + s1.Length); // s1の長さ:21 Console.WriteLine(String.Concat("s2の長さ:", s2.Length)); // s2の長さ:21 Console.WriteLine( "s1の長さ:{0}\ns2の長さ:{1}", s1.Length, s2.Length); // s1の長さ:21 // s2の長さ:21 ////////// インデクサによる文字列へのアクセス for (int i = 0; i < s1.Length; i++) { Console.Write(s1[i]); } Console.WriteLine(); // うらにわにはにわにわにはにわにわとりがいる ////////// 文字による文字列の分割 char[] delimiter = new char [] {'は'}; foreach (string sub in s1.Split(delimiter)) { Console.WriteLine(sub); } // うらにわに // にわにわに // にわにわとりがいる ////////// 文字列による文字列の分割 int head, tail; string sep = "には"; for (head = 0 ; (tail = s1.IndexOf(sep, head)) != -1; head = tail + sep.Length) { Console.WriteLine(s1.Substring(head, tail - head)); } Console.WriteLine(s1.Substring(head)); // うらにわ // にわにわ // にわにわとりがいる ////////// Shift-JISでのバイト数のカウント Encoding sjis = Encoding.GetEncoding("shift-jis"); Console.WriteLine(sjis.GetByteCount(s1)); // 42 Console.WriteLine(sjis.GetByteCount(s2)); // 40 ////////// Shift-JISでのbyte列と文字列 byte[] bstr = sjis.GetBytes("2わのにわとり"); foreach (byte b in bstr) { Console.Write("{0:X} ", b); } Console.WriteLine(); // 32 82 ED 82 CC 82 C9 82 ED 82 C6 82 E8 Console.WriteLine(sjis.GetString(bstr)); // 2わのにわとり ////////// 文字列のフォーマット for (int i = 9; i < 12; i++) { Console.WriteLine("{0,4}, {0:D4}, {0,4:X}, {0:X4}", i); } // 9, 0009, 9, 0009 // 10, 0010, A, 000A // 11, 0011, B, 000B Console.WriteLine("{0:x4}", 255); // 00ff Console.WriteLine(255.ToString("x4")); // 00ff Console.WriteLine("{0:yyyy/MM/dd HH:mm:ss}", DateTime.Now); // 2002/02/19 07:11:21 Console.WriteLine(DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")); // 2002/02/19 07:11:21 ////////// verbatim文字列 string path1 = "\\windows\\system32\\drivers\\etc\\hosts"; string path2 = @"\windows\system32\drivers\etc\hosts"; Console.WriteLine(path1 == path2); // True } }