カンマ区切りの文字列でデータを渡してくるシステムが有り、受け取ったデータの精査や整形の為に一発で配列へ変換する関数を考えて見た。
実行環境
- 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。
/****************************************************************************/
/* */
/* 処理概要 : 文字配列変換取得処理 */
/* メソッド名 : 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はデフォルト引数で、省略された場合はカンマとしています。
もしタブ区切りだったりその他の文字列で区切られたデータの場合はその区切り文字を渡してあげましょう。
呼び元はこんな感じで分けたいデータを渡してあげるとよい↓
string[] arrLogData = GetSplitToArray(strLogData);
実際の動き
GetSplitToArray通過後にブレーク張ってます。渡してる値はカンマ区切りなのでstrCharaは省略
C# は いいぞ。(CV:ちょ○ど)
コメント