2017年08月 / 07月≪ 12345678910111213141516171819202122232425262728293031≫09月

インフォメーション

FC2ブログで画像等を一括アップロードするソフトを地味に配布してます。
FC2ブログ用ファイルアップロードの最新版はこちら
(ベクター)FC2ブログ用ファイルアップロード

--.--.-- (--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


 |  --:--  |  スポンサー広告  |  Top↑

2008.05.16 (Fri)

C#.NETでワイルドカードを使用して文字列検索したい

C#.NETでワイルドカードを使いたいけど、ファイルの取得時くらいにしか対応してない。
文字列の検索でワイルドカードを使用したいので、Regex(正規表現)クラスを利用して検索することに。

まずワイルドカードを正規表現に変換する。
Regex.Replaceで"?"と"*"だけ変換するのにつかうデリゲートメソッドを宣言。
デリゲートとかよくわからない

/// <summary>
/// ワイルドカードの検索文字列を正規表現に変換する
/// </summary>
/// <param name="m"></param>
/// <returns></returns>
private static string WildCardMatchEvaluator(System.Text.RegularExpressions.Match m)
{
    string s = m.Value;
    // ?は任意の1文字
    if (s.Equals("?")) return ".";
    // *は任意の文字列
    else if (s.Equals("*")) return ".*";
    // それ以外はエスケープ
    else return System.Text.RegularExpressions.Regex.Escape(s);
}


Match.Replaceと上記のメソッドを使ってwcPattern(ワイルドカード)->rPattern(正規表現)に変換。
MatchEvaluator型をnewして使う。

string rPattern = System.Text.RegularExpressions.Regex.Replace(wcPattern, ".", 
    new System.Text.RegularExpressions.MatchEvaluator(WildCardMatchEvaluator)); 


rPatternにはwcPatternの「?」が「.」に、「*」が「.*」に変換された文字が入ります。
「+」とか「(」とかが入っていた場合はエスケープされます。「\+」とか「\(」

あとはrPatternを使って正規表現で検索するなり好きに

if (System.Text.RegularExpressions.Regex.IsMatch(str, rPattern))
{
    MessageBox.Show("まっちした");
}


スポンサーサイト


 |  13:27  |  C#.NET  |  トラックバック(0)  |  コメント(0)  |  Top↑

2008.01.25 (Fri)

数値のフォーマット

以下コピペ

string name = "鈴木";
int month = 1;
int day = 30;

string str = String.Format("{0}さん、今日は{1}月{2}日です", name, month, day);


指定する書式 書式指定項目の記述例 出力例
幅指定で右詰め String.Format("{0, 4}", num) “ 1”
幅指定で左詰め String.Format("{0, -4}", num) “1 ”
0埋め String.Format("{0:D4}", num)
または
String.Format("{0:0000}", num) “0001”
幅指定かつ0埋め String.Format("{0, 8:D4}", num) “ 0001”



 |  11:27  |  C#.NET  |  トラックバック(0)  |  コメント(0)  |  Top↑
 | BLOGTOP | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。