wedata

Database: UStoreScriptFunction9

Item Details: 共通関数

spec_version 1
content /** * "d度m分s秒"形式を固定小数点数値の度数に変換して返す。 * @param d 度の数値を含む文字列 (string) * @param m 分の数値を含む文字列 (string) * @param s 秒の数値を含む文字列 (string) * @return 固定小数点数値の度数(double) */ function parseDegree(d,m,s) { var dd = pickupNum(d); var mm = pickupNum(m); var ss = pickupNum(s); var n = dd + (mm / 60) + (ss / 3600); return n; } /** * 文字列から最初に出現した固定小数点数値を抽出して返す。 * @param str 文字列 (string) * @return 固定小数点数値の度数(double) */ function pickupNum(str) { var size = str.length; var s = -1; var e = 0; var fract = false; for (var i = 0; i < size; i++) { var ch = str.charAt(i); if ('0' <= ch && ch <= '9') { if (s < 0) s = i; e = i; } else if (ch == '.') { if (fract) break; fract = true; } else { break; } } return parseFloat(str.substring(s, e+1)); } /** * 数値と文字が混じった文字列から、数値を抽出して、出現順に配列にして返す。 * @param str 文字列 (string) * @return 数値(double)の配列 */ function pickupNums(str) { var nums = new Array(); var n = 0; var s = -1; var e = 0; var inNum = false; var fract = false; var size = str.length; for (var i = 0; i < size; i++) { var ch = str.charAt(i); if ('0' <= ch && ch <= '9') { if (!inNum) s = i; e = i; inNum = true; } else if (ch == '.') { if (inNum) { if (fract) { nums[n++] = parseFloat(str.substring(s, e+1)); inNum = false; fract = false; } else { fract = true; } } } else { if (inNum) nums[n++] = parseFloat(str.substring(s, e+1)); inNum = false; fract = false; } } if (inNum) nums[n++] = parseFloat(str.substring(s, e+1)); return nums; }

History

Back