c#では全く同じ文字配列の場合、コンパイラはそれらをすべて同じ場所に保管し参照を同一にします
これを文字列インターン機能と呼びます。インターンを避けるためにはString.Copyメソッドを利用します
- 文字を数字に変換
- 文字列をリバースする関数
- ストリングビルダー
- 文字列を分割してキーワードのみを取り出す
- 文字をオブジェクトとして扱い同一性を確認
- 文字の比較(StringComparison列挙体の使用例)
- LINQを使用しないソートやサーチの例
string n="123";
employeeCounter = Int32.Parse(n); //文字を数字に変換
class StringTest
{
//文字列をリバースする関数
string StringReverse(string str)
{
string reverse="";
for (int i = 0; i < str.Length; i++)
{
reverse += str[str.Length - i - 1];
}
return reverse;
}
public StringTest()
{
string soft = "Panzer Dragoon ORTA";
Console.WriteLine(soft.Replace("ORTA", "AZEL"));
Console.WriteLine(soft.ToUpper());
Console.WriteLine(soft.ToLower());
Console.WriteLine(soft); //事前のstringクラスのメソッドは内容を書き換えていない事に注目。あくまで戻り値
Console.WriteLine(StringReverse(soft));
StringBuilder sb = new StringBuilder("Rat Dog Fox"); //ストリングビルダーは関数機能が少ないが高速に文字列を加工できる
sb.Append(" Cow");
sb[0] = 'C';
Console.WriteLine(sb);
//文字列を分割してキーワードのみを取り出す
char[] delimiterChars = { ' ', ',', '.', ':', ';', '\t', '\n', '\r' };
string sampleText = "one\ttwo three:four, five six \tseven";
Console.WriteLine("Original: " + sampleText);
var words = sampleText.Split(delimiterChars).Where(s => s != "");
Console.WriteLine("Keyword in text: "+words.Count());
foreach (var item in words)
{
Console.WriteLine(item);
}
}
}
出力はこうなる
Panzer Dragoon AZEL
PANZER DRAGOON ORTA
panzer dragoon orta
Panzer Dragoon ORTA
ATRO noogarD reznaP
Cat Dog Fox Cow
Original: one two three:four, five six seven
Keyword in text: 7
one
two
three
four
five
six
seven
文字列を比較するサンプル
class StringTest2
{
public StringTest2()
{
//c#では全く同じ文字配列の場合、コンパイラはそれらをすべて同じ場所に保管し参照を同一にします
//これを文字列インターン機能と呼びます。インターンを避けるためにはString.Copyメソッドを利用します
string str = @"C:\users";
string str2 = @"C:\users";
string str3 = @"C:\Users";
string str4 = string.Copy(str);
Console.WriteLine(ReferenceEquals(str, str2)); //オブジェクトとして同一
Console.WriteLine(ReferenceEquals(str, str4)); //オブジェクトとして同一ではない
Console.WriteLine(str.Equals(str3));
Console.WriteLine(str.Equals(str3,StringComparison.OrdinalIgnoreCase)); //大文字小文字の区別無しに識別
//LINQを使用しないソートやサーチの例
string[] lines = new string[]
{
@"c:\public\textfile.txt",
@"c:\public\textFile.TXT",
@"c:\public\Text.txt",
@"c:\public\testfile2.txt"
};
Array.Sort(lines, StringComparer.Ordinal);
foreach (var item in lines)
{
Console.WriteLine(item);
}
string searchString = @"c:\public\TEXTFILE.TXT";
int index = Array.BinarySearch(lines, searchString, StringComparer.OrdinalIgnoreCase);
Console.WriteLine("index={0} : Find is {1}", index, lines[index]);
}
}
最終更新:2012年06月04日 00:52