大文字だけ判定できるか? §
文字列の大文字小文字変換はToUpper系メソッドやToLower系メソッドを使えば容易です。
では、大文字だけ抜き出して表示するような処理は簡単に書けるでしょうか?
それには1文字単位で大文字を判定する必要があります。
AからZまでの文字を調べても良いのですが、それだとアルファベットが27文字以上ある言語で破綻します。
そういう場合にはChar.IsUpperメソッドを使って大文字かどうかを判定できます。
罠の数々 §
- Char.IsUpperは国際化の影響を受けるので、アルファベットが27文字以上ある言語でも安全だ。一方で、国際化設定次第で判定結果が変化する可能性があるので、必ず同じ結果になるかどうかは分からない
参考リンク §
Char.IsUpper メソッド
Char.IsUpper メソッドには文字列を対象にしたバリエーションもある。これを使って書き換えられないか検討してみよう。Char.IsUpper メソッドの詳細は上記リンクで確認できる。
リポジトリ §
https://github.com/autumn009/cshowto
UpperOnly §
using System;
class Program
{
static void Main()
{
var s = "Jack Knife";
foreach (var item in s)
{
if (Char.IsUpper(item)) Console.Write(item);
}
Console.WriteLine();
}
}
実行結果
JK