転職を繰り返したサラリーマンの多趣味ブログ

30才未経験でSEに転職した人の多趣味ブログ

C#を勉強する11_文字列の比較

転職活動のなかで、paizaに出会った。
paiza.jp
paizaのスキルチェックでは、プログラミングの問題を解くことができる。この問題を解く際に、文字列やリストを操作するメソッドを知っていると、ソースを簡潔に書くことができる。C#には色々便利なメソッドが用意されているので、まずは文字列操作から色々まとめていく。

文字列の比較

Javaで慣れているとequalsメソッドを使おうとするが、C#では==演算子を使える。

if (str1 == str2) { }

ただ、この文字列比較は色々種類がある。さっきの==演算子を使った比較は、完全一致が条件になるが、大文字・小文字の区別なく比較したい場合などもでてくる。
そういった時は、Compareメソッドを使う。

var str1 = "windows";
var str2 = "WINDOWS";
// 第3引数をtrueにすることで、大文字・小文字の区別なく比較
if (String.Compare(str1, str2, true) == 0) { }

このCompareメソッドはオーバーロードされたメソッドがある。

var str1 = "カステラ";
var str2 = "かすてら";
var cultureInfo = new CultureInfo("ja-JP");
// ひらがなとカタカナの区別なく文字列比較
if(String.Compare(str1, str2, cultureInfo, CompareOptions.IgnoreKanaType) == 0) { }
var str1 = "HTML5";
var str2 = "HTML5";
var cultureInfo = new CultureInfo("ja-JP");
// 全角と半角の区別なく文字列比較
if(String.Compare(str1, str2, cultureInfo, CompareOptions.IgnoreWidth) == 0) { }
var str1 = "Computer";
var str2 = "COMPUTER";
var cultureInfo = new CultureInfo("ja-JP");
// 全角・半角、大文字・小文字の区別なく文字列比較
if(String.Compare(str1, str2, cultureInfo, CompareOptions.IgnoreWidth : CompareOptions.IgnoreCase) == 0) { }