javascript splitメソッドを使用して、文字列をサブ文字列の配列に分割できます。例:
var timeformat="HH:MM:SS";
var timeformatarray=timeformat.split(":");
セパレータが一定でない場合に文字列を分割する簡単な方法はありますか?実際、私は次のような任意の形式で提供される可能性のあるタイムフォーマットを分割する必要があります。
var timeformat="HH hr : MM min : SS sec";
var timeformat="HHhour:MMminute:SSsecond";
var timeformat="HHh MMm SSs";
定数はHH、MM、SSのみです。Timeformatは、ユーザーが表示する時刻の形式を指定するためのオプションです。「HH」、「MM」、「SS」は定数テキスト(数字ではありません)であり、これら3つは変更されない固定定数です。変更できるのは、上記の例に示すように、timeformat文字列のサフィックスとセパレータだけです。
作業できるように、timeformat文字列を配列に分割するメソッドが必要です。結果が欲しい:
timeformat[0] = "HH"
timeformat[1] = " hr : " <- with spaces (if any)
timeformat[2] = "MM"
timeformat[3] = " min : "
timeformat[4] = "SS"
timeformat[5] = " sec"
この配列を使用して、時刻をフォーマットし、それぞれの接尾辞と区切り文字を追加します。正規表現を使用して各文字をループするさまざまな方法を試しましたが、効率的でまっすぐではありませんでした。よろしくお願いします。
解決策:
正規表現、分割、配列を使用してformatstringで機能するメソッドを作成することで、問題を解決できました。私はもっと良い解決策があると確信していますが、私はそれを得ることができなかったので、ここに問題の私の解決策があります。Stephen C
正規表現の方向性に感謝します。
function GetTimeFormatArray(timeformatstring){
var timesuffixes = timeformatstring.split(/HH|MM|SS/);
timesuffixes= $.grep(timesuffixes,function(n){
return(n);
});
var pattern = timesuffixes.join('|');
var timeprefixes = timeformatstring.split(new RegExp(pattern));
timeprefixes = $.grep(timeprefixes,function(n){
return(n);
});
var timeFormatArray = [];
for(var i = 0; i < timesuffixes.length; i++){
timeFormatArray.push(timeprefixes[i]);
timeFormatArray.push(timesuffixes[i]);
}
return timeFormatArray;
}