MT4/MQLソースサンプル:ゼロパディング処理
処理内容
「ゼロ揃え」とか「桁そろえ」とか「桁合わせ」とかとも言いますでしょうか
基本の基本、ゼロパディングのMQLソースを無料公開します。
ゼロパディング (英: zero padding) またはゼロ埋めは、文字で数値を表す際に、書式で指定された桁数に満たない場合に、桁数をそろえるためゼロを付加することである。
by wikipedia
ということで、桁数(文字数)を揃える目的で「12」→「00012」や「345」→「00345」のように左に「0」を何個かくっつけることです。
これが意外と揃わない時が多いんです。
特に時刻とか日付系
外部APIとかサーバーとか、ローカルタイムとか色々 判定して処理したいときに
あれ、動かないじゃんって思うとゼロが揃ってなかったりするんですよね。
こんな感じで
サーバーから取った日付:02/08/2021
とあるAPIから取った日付:2/8/2021
まあ他にも指標系のニュース使ったりするときもこの現象は発生します。
そんな時はこの関数にかましちゃってください。
使い方は簡単
使い方
桁合わせ後の文字列 = ZeroPading(変数,桁数)
■引数
変数(int),揃えたい桁数(int)
■返り値
揃った後の文字列(string)
無料ソースコード
■関数側のコードです。
呼び出し側の前に記述されている必要があります。
//+------------------------------------------------------------------+
//| ゼロパディング ZeroPading
//| code by KOUSHIROU
//| https://note.com/mt4_coder
//+------------------------------------------------------------------+
string ZeroPading(int rawdigits, int digits)
{
string result = IntegerToString(rawdigits);
int length = StringLen(result);
if(length >= digits)
{
return(result);
}
for(int i = 0; i < digits - length; i++)
{
result = "0" + result;
}
return(result);
}
//+------------------------------------------------------------------+
■呼び出し側のコードです。
日付が1桁の場合にゼロ付けする。例)5 → 05、31→31(2桁の場合はそのまま)
string day_2dig = ZeroPading(Day(),2);
5桁に統一する 例)123→00123にする
string nazo_code = 123;
int marumekomi = 5;
string aft_code = ZeroPading(nazo_code,marumekomi);
以上でございます。もし間違い・アドバイス等ありましたら、遠慮なくご指摘くださいませ。
この記事が気に入ったらサポートをしてみませんか?