カンマ区切りの文字列でデータを渡してくるシステムが有り、受け取ったデータの精査や整形の為に一発で配列へ変換する関数を考えて見た。
実行環境
- Windows 10 Pro 1909
- Visual Studio Express 2013 for Windows Desktop
- Visual C# 5.0
こんなデータがありまして
ログデータとかで良くある感じ。
“server” | “yyyy/mm/dd” | “hh:mm:ss” | “status” |
今回は定期的にログを取得してそのデータを整形してメール通知する って仕組みを作りたいので、
まずは上記のデータ(カンマ区切り)を配列に変換したい。
なので以下の様に配列に変換出来る関数を作って見た。
GetSplitToArray
以下コピッペでOK。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
/****************************************************************************/ /* */ /* 処理概要 : 文字配列変換取得処理 */ /* メソッド名 : GetSplitToArray */ /* */ /****************************************************************************/ private string[] GetSplitToArray(string InputValue, string strChara = ",") { string[] SplValue; string[] SplWkValue; string[] retValue; // データを指定文字で区切る // 指定文字が省略された場合はカンマ区切りとする SplValue = InputValue.Replace("'", "").Split(Convert.ToChar(strChara)); SplWkValue = new string[SplValue.Length]; int ListCount = 0; for (int Cnt = 0; Cnt < SplValue.Length; Cnt++) { SplValue[Cnt] = SplValue[Cnt].Trim(); if (SplValue[Cnt] != "") { SplWkValue[ListCount] = SplValue[Cnt]; ListCount = ListCount + 1; } } retValue = new string[ListCount]; if (ListCount == 0) { return retValue; } for (int Cnt = 0; Cnt < ListCount; Cnt++) { retValue[Cnt] = SplWkValue[Cnt]; } // 返却値 return retValue; } |
strCharaはデフォルト引数で、省略された場合はカンマとしています。
もしタブ区切りだったりその他の文字列で区切られたデータの場合はその区切り文字を渡してあげましょう。
呼び元はこんな感じで分けたいデータを渡してあげるとよい↓
1 |
string[] arrLogData = GetSplitToArray(strLogData); |
実際の動き
GetSplitToArray通過後にブレーク張ってます。渡してる値はカンマ区切りなのでstrCharaは省略
C# は いいぞ。(CV:ちょ○ど)
コメント