callback([ { "created_at": "2012-03-17T20:00:48+09:00", "resource_url": "http://wedata.net/items/59176", "database_resource_url": "http://wedata.net/databases/UStoreScriptFunction9", "data": { "content": "/*\n * 市町村名を抽出する。\n * getCity(\"田村市都路町古道\") == \"田村市\"\n * getCity(\"双葉郡浪江町川房\") == \"双葉郡浪江町\"\n * getCity(\"双葉郡川内村下川内\") == \"双葉郡川内村\"\n */\nfunction getCity(str) {\n\tvar p = getDelimiterPos(str, \"市\");\n\tif (p > 0)\n\t\treturn str.substring(0, p + 1);\n\tp = getDelimiterPos(str, \"町\");\n\tif (p > 0)\n\t\treturn str.substring(0, p + 1);\n\tp = getDelimiterPos(str, \"村\");\n\tif (p > 0)\n\t\treturn str.substring(0, p + 1);\n\treturn str;\n}", "spec_version": "1" }, "updated_at": "2012-03-27T22:53:55+09:00", "created_by": "test", "name": "位置の抽出" }, { "database_resource_url": "http://wedata.net/databases/UStoreScriptFunction9", "updated_at": "2013-10-17T14:40:19+09:00", "created_by": "test", "name": "測定高度の計算", "data": { "spec_version": "1", "content": "/*\r\n * height(\"5cm\") == 0.05\r\n * height(\"50cm\") == 0.5\r\n * height(\"高さ1m\") == 1\r\n * height(\"地表近く\") == 0.01\r\n */\r\nfunction height(str) {\r\n\tstr = toHankaku(str);\r\n\tif (str.charAt(str.length - 2) == 'c')\r\n\t\treturn pickupNum(str)/100;\r\n\tif (str.charAt(str.length - 1) == 'm')\r\n\t\treturn pickupNum(str);\r\n\treturn \"0.01\"\r\n}\r\n\r\n/*\r\n * height(\"測定値(1 ㎝)\") == 0.01\r\n * height(\"測定値(1m)\") == 1.0\r\n * height(\"地表近く\") == 0.01\r\n */\r\nfunction height2(str) {\r\n\tstr = skipSpace(toHankaku(str));\r\n\tvar num = pickupNum(str);\r\n\tif (!isNaN(num)) {\r\n\t\tif (str.indexOf('c') > 0 || str.indexOf('㎝') > 0)\r\n\t\t\treturn num/100;\r\n\t\tif (str.indexOf('m') > 0)\r\n\t\t\treturn num;\r\n\t}\r\n\treturn 0.01;\r\n}" }, "created_at": "2012-03-14T10:36:19+09:00", "resource_url": "http://wedata.net/items/58943" }, { "name": "\u7d4c\u7def\u5ea6\u306e\u5909\u63db(\"d\u5ea6m\u5206s\u79d2\"\u5f62\u5f0f\u3092\u56fa\u5b9a\u5c0f\u6570\u70b9\u6570\u5024\u306e\u5ea6\u6570\u306b\u5909\u63db)", "resource_url": "http:\/\/wedata.net\/items\/57639", "updated_at": "2012-02-17T00:23:17+09:00", "created_by": "test", "database_resource_url": "http:\/\/wedata.net\/databases\/UStoreScriptFunction9", "data": { "spec_version": "1", "content": "\/**\n * \"d\u5ea6m\u5206s\u79d2\"\u5f62\u5f0f\u3092\u56fa\u5b9a\u5c0f\u6570\u70b9\u6570\u5024\u306e\u5ea6\u6570\u306b\u5909\u63db\u3057\u3066\u8fd4\u3059\u3002\n * @param d \u5ea6\u306e\u6570\u5024\u3092\u542b\u3080\u6587\u5b57\u5217 (string)\n * @param m \u5206\u306e\u6570\u5024\u3092\u542b\u3080\u6587\u5b57\u5217 (string)\n * @param s \u79d2\u306e\u6570\u5024\u3092\u542b\u3080\u6587\u5b57\u5217 (string)\n * @return \u56fa\u5b9a\u5c0f\u6570\u70b9\u6570\u5024\u306e\u5ea6\u6570(double)\n *\/\nfunction parseDegree(d,m,s) {\n var dd = pickupNum(d);\n var mm = pickupNum(m);\n var ss = pickupNum(s);\n var n = dd + (mm \/ 60) + (ss \/ 3600);\n return n;\n}\n" }, "created_at": "2012-02-17T00:23:17+09:00" }, { "database_resource_url": "http://wedata.net/databases/UStoreScriptFunction9", "updated_at": "2013-10-22T16:41:08+09:00", "created_by": "test", "name": "日時の変換", "data": { "spec_version": "1", "content": "/**\r\n * 文字列から年月日時分として取り出しす。\r\n * [例]\r\n * parseYMDHM(\"2012/3/5 12:07\") == \"2012-03-05T12:07:00\"\r\n * parseYMDHM(\"2012年3月5日 12:00\") == \"2012-03-05T12:00:00\"\r\n * @param str 半角または全角の数字の文字を含む文字列\r\n * @return 年月日時分\r\n */\r\nfunction parseYMDHM(str) {\r\n\tvar nums = pickupNumZ(str, false);\r\n\tif (nums[2] > 31) // 日と時の間のスペースが無視された場合\r\n\t\tif (nums[2] < 320) { // nums[2] == 112 などの場合は間違う恐れあり\r\n\t\t\tnums[4] = nums[3];\r\n\t\t\tnums[3] = nums[2] % 10;\r\n\t\t\tnums[2] = Math.floor(nums[2] / 10 + 0.1);\r\n\t\t} else {\r\n\t\t\tnums[4] = nums[3];\r\n\t\t\tnums[3] = nums[2] % 100;\r\n\t\t\tnums[2] = Math.floor(nums[2] / 100 + 0.1);\r\n\t\t}\r\n\treturn nums[0] + \"-\" + toDigit2(nums[1]) + \"-\" + toDigit2(nums[2]) +\r\n\t\t\"T\" + toDigit2(nums[3]) + \":\" + toDigit2(nums[4]) + \":00\";\r\n}\r\n/**\r\n * 文字列から先頭の1個の整数を平成の年としてを取り出し、西暦年に変換する。\r\n * [例]\r\n * parseHyear(\"平成23年\") == 2011\r\n * parseHyear(\"H23\") == 2011\r\n * parseHyear(\"23\") == 2011\r\n * @param str 半角または全角の数字の文字を含む文字列\r\n * @return 西暦年\r\n */\r\nfunction parseHyear(str) {\r\n\tvar nums = pickupNumZ(str, false);\r\n\treturn \"\"+ (nums[0] + 1988);\r\n}\r\n\r\n/**\r\n * 文字列から平成の年月日として取り出し、西暦年月日に変換する。\r\n * [例]\r\n * parseHdate(\"平成23年9月24日\") == \"2011-09-24\"\r\n * parseHdate(\"H23.12.4 (晴)\") == \"2011-12-04\"\r\n * parseHdate(\"23.9.24\") == \"2011-09-24\"\r\n * @param str 半角または全角の数字の文字を含む文字列\r\n * @return 西暦年月日\r\n */\r\nfunction parseHdate(str) {\r\n\tvar nums = pickupNumZ(str, false);\r\n\treturn (nums[0] + 1988) +\"-\"+ toDigit2(nums[1]) +\"-\"+ toDigit2(nums[2]);\r\n}\r\n\r\n/**\r\n * 文字列から月日を取り出す。\r\n * [例]\r\n * parseMMDD(\"9月24日 雨\") == \"09-24\"\r\n * parseMMDD(\"9.24 (晴)\") == \"09-24\"\r\n * parseMMDD(\"10.24\") == \"10-24\"\r\n * @param str 半角または全角の数字の文字を含む文字列\r\n * @return 月日\r\n */\r\nfunction parseMMDD(str) {\r\n\tvar nums = pickupNumZ(str, false);\r\n\treturn toDigit2(nums[0]) +\"-\"+ toDigit2(nums[1]);\r\n}\r\n\r\n/**\r\n * 文字列から時分を取り出しす。\r\n * [例]\r\n * parseHHmm(\"9時23分\") == \"09:23\"\r\n * parseHHmm(\"9.3\") == \"09:03\"\r\n * parseHHmm(\"午後9時3分\") == \"21:03\"\r\n * parseHHmm(\"-\") => 00:00\r\n * @param str 文字列\r\n * @return 時分\r\n */\r\nfunction parseHHmm(str) {\r\n\tvar nums = pickupNumZ(str, false);\r\n\tif (nums.length < 2) return \"00:00\";\r\n\tif (str[0] == \"後\" || str[1] == \"後\")\r\n\t nums[0] += 12;\r\n\tif (nums.length > 1)\r\n\t\treturn toDigit2(nums[0]) +\":\"+ toDigit2(nums[1]);\r\n\telse\r\n\t\treturn toDigit2(nums[0]) +\":00\";\r\n}\r\n\r\n/**\r\n * 1桁の数字の前に\"0\"を補って2桁にする。\r\n * [例]\r\n * twoDigits(\"12月\") == \"12\"\r\n * twoDigits(\"1日\") == \"01\"\r\n * @param num 半角または全角の数字の1贈ォ2桁の数字を含む文字列\r\n * @return 2桁の数字\r\n */\r\nfunction twoDigits(str) {\r\n\tvar nums = pickupNumZ(str, false);\r\n\treturn toDigit2(nums[0]);\r\n}\r\n\r\n/**\r\n * yy.mm.dd形式のymd(yyは平成の年)とhh:mm形式の時分をYYYY-MM-DDThh:mm:00形式の時刻に変換する。\r\n * makeDate1(\"平23.8.31\",\"9:55\") == \"2011-08-31T09:55:00\"\r\n * @param ymd yy.mm.dd形式の年月日(yyは平成の年) (string)\r\n * @param hm hh:mm形式の時分 (string)\r\n * @return YYYY-MM-DDThh:mm:00形式の時刻(string)\r\nfunction makeDate1(ymd,hm) {\r\n if (ymd.length == 0 || hm.length == 0) return \"\";\r\n for(var i = 0; ymd[i] < '0' || '9' < ymd[i]; i++);\r\n ymd = ymd.substring(i);\r\n var yymmdd = ymd.split('.');\r\n var year = parseInt(yymmdd[0]) + 1988;\r\n var month = yymmdd[1];\r\n if (month.length == 1) month = '0' + month;\r\n var day = yymmdd[2];\r\n if (day.length == 1) day = '0' + day;\r\n var i = hm.indexOf(':');\r\n var hour = hm.substring(0, i);\r\n if (hour.length == 1) hour = '0' + hour;\r\n var minute = hm.substring(i+1);\r\n if (minute.length == 1) minute = '0' + minute;\r\n return year +'-'+ month +'-'+ day +'T'+ hour +':'+ minute +':00';\r\n}\r\n */\r\n\r\nfunction makeDate1(ymd,hm) {\r\n if (ymd.length == 0 || hm.length == 0) return \"\";\r\n for(var i = 0; ymd[i] < '0' || '9' < ymd[i]; i++);\r\n ymd = ymd.substring(i);\r\n var yymmdd = pickupNumZ(ymd, false);\r\n if (yymmdd[0] > 2000) {\r\n var year = parseInt(ymd.substring(8,10)) + 1988;\r\n var month = ymd.substring(5,7);\r\n var day = ymd.substring(2,4);\r\n } else {\r\n var yymmdd = ymd.split('.');\r\n var year = parseInt(yymmdd[0]) + 1988;\r\n var month = yymmdd[1];\r\n if (month.length == 1) month = '0' + month;\r\n var day = yymmdd[2];\r\n if (day.length == 1) day = '0' + day;\r\n }\r\n var i = hm.indexOf(':');\r\n var hour = hm.substring(0, i);\r\n if (hour.length == 1) hour = '0' + hour;\r\n var minute = hm.substring(i+1);\r\n if (minute.length == 1) minute = '0' + minute;\r\n return year +'-'+ month +'-'+ day +'T'+ hour +':'+ minute +':00';\r\n}\r\n\r\n/**\r\n * yy.mm.dd形式がPDF変換によりdd.mm.yyと認識され、\r\n * 20dd-mm-yyT00:00:00.000に変換される場合の対応。\r\n * YYYY-MM-DDThh:mm:00形式の時刻に変換して返す。\r\n * @param ymd yy.mm.dd形式の年月日(yyは平成の年) (string)\r\n * @param hm hh:mm形式の時分 (string)\r\n * @return YYYY-MM-DDThh:mm:00形式の時刻(string)\r\n */\r\nfunction makeDate1x(ymd,hm) {\r\n //var yymmdd = ymd.split('.');\r\n var year = parseInt(ymd.substring(8,10)) + 1988;\r\n var month = ymd.substring(5,7);\r\n var day = ymd.substring(2,4);\r\n var i = hm.indexOf(':');\r\n var hour = hm.substring(0, i);\r\n if (hour.length == 1) hour = '0' + hour;\r\n var minute = hm.substring(i+1);\r\n if (minute.length == 1) minute = '0' + minute;\r\n return year +'-'+ month +'-'+ day +'T'+ hour +':'+ minute +':00';\r\n}\r\n\r\n/**\r\n * 「YYYY」形式の年、「数字+文字」形式の月、「hh」形式の時間、「mm」形式の分から、YYYY-MM-DDThh:mm:00形式の時刻に変換して返す。\r\n * @param year 「YYYY」形式の年(string)\r\n * @param mmdd 「数字+文字」形式の月。たとえば\"8月17日\" (string)\r\n * @param hour 「hh」形式の時間(string)\r\n * @param minute 「mm」形式の分(string)\r\n * @return YYYY-MM-DDThh:mm:00形式の時刻(string)\r\n */\r\nfunction makeDate2(year, mmdd, hour, minute) {\r\n var nums = pickupNums(mmdd);\r\n var month = nums[0];\r\n if (month < 10) month = '0' + month;\r\n var day = nums[1];\r\n if (day < 10) day = '0' + day;\r\n return year +'-'+ month +'-'+ day +'T'+ hour +':'+ minute +':00';\r\n}\r\n\r\n/**\r\n * 「YYYY/MM/DD hh:mm」から「YYYY-MM-DDThh:mm:00」形式の時刻に変換して返す。\r\n * (注)入力の区切り文字は他のものでもよい。\r\n * @param ymdhm 「YYYY/MM/DD hh:mm」(string)\r\n */\r\nfunction makeDate3(ymdhm) {\r\n var nums = pickupNums(ymdhm);\r\n return nums[0] +'-'+ nums[1] +'-'+ nums[2] +'T'+ nums[3] +':'+ nums[4] +':00';\r\n}\r\n\r\n/**\r\n * 年が平成のはずが西暦となっている。\r\n * (「PDF Converter」の変換からの可能性あり)\r\n * [例]\r\n * parse2000HMD(\"2023-06-05)[H23-06-05] == \"2011-06-05\"\r\n * @param str 半角または全角の数字の文字を含む文字列\r\n * @return 年月日\r\n */\r\nfunction parse2000HMD(str) {\r\n\tif (str == null || str == \"\") return \"\";\r\n\tvar nums = pickupNums(str);\r\n\treturn (nums[0]-12) + \"-\" + toDigit2(nums[1]) + \"-\" + toDigit2(nums[2]);\r\n}\r\n" }, "created_at": "2012-02-17T00:21:27+09:00", "resource_url": "http://wedata.net/items/57638" }, { "name": "\u5171\u901a\u95a2\u6570\u5b9a\u7fa9", "resource_url": "http:\/\/wedata.net\/items\/56197", "updated_at": "2011-12-21T14:18:28+09:00", "created_by": "test", "database_resource_url": "http:\/\/wedata.net\/databases\/UStoreScriptFunction9", "data": { "spec_version": "1", "content": "function add(x, y) {\r\n if (isEmpty(x) || isEmpty(y)) return null;\r\n return x + y;\r\n}\r\nfunction div(x , y) {\r\n if (isEmpty(x) || isEmpty(y)) return null;\r\n return x \/ y;\r\n}\r\nfunction redOx(x, y) {\r\n if (isEmpty(x) || isEmpty(y)) return \"\";\r\n return x \/ y;\r\n}\r\nfunction redPar(x, y) {\r\n if (isEmpty(x) || isEmpty(y)) return \"\";\r\n return x \/ (x + y) * 100;\r\n}\r\nfunction isEmpty(v) {\r\n return v == null || v == \"\";\r\n}\r\n" }, "created_at": "2011-12-21T14:18:28+09:00" }, { "database_resource_url": "http://wedata.net/databases/UStoreScriptFunction9", "updated_at": "2013-10-17T14:39:04+09:00", "created_by": "test", "name": "共通関数", "data": { "spec_version": "1", "content": "/**\r\n * コメント用。引数を無視する。\r\n */\r\nfunction comment(str) {\r\n return \"\";\r\n}\r\n\r\nvar hanStr = \" !\\\"#$%'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~-\";\r\nvar zenStr = \" !”#$%’()*+,―./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|} ̄・\";\r\nvar hanDigits = \"0123456789-+\";\r\nvar zenDigits = \"0123456789―+\";\r\n\r\n/**\r\n * 文字が半角または全角の数字か調べる。\r\n * @param ch 文字\r\n * @return 半角または全角の数字ならtrue、それ以外ならfalse\r\n */\r\nfunction isDigitZ(ch) {\r\n\tif (hanDigits.indexOf(ch) >= 0) return true;\r\n\treturn zenDigits.indexOf(ch) >= 0;\r\n}\r\n\r\n/**\r\n * 半角または全角の数字で構成される文字列を浮動小数点数値に変換する。\r\n * @param str 半角または全角の数字で構成される文字列\r\n * @return 浮動小数点数値\r\n */\r\nfunction parseFloatZ(str) {\r\n\tvar result = new Array(str.length);\r\n\tfor (var i = 0; i < str.length; i++) {\r\n\t\tvar ch = str.charAt(i);\r\n\t\tvar p = hanDigits.indexOf(ch);\r\n\t\tif (p >= 0) {\r\n\t\t\tresult[i] = hanDigits[p];\r\n\t\t} else {\r\n\t\t\tp = zenDigits.indexOf(ch);\r\n\t\t\tif (p >= 0) {\r\n\t\t\t\tresult[i] = hanDigits[p];\r\n\t\t\t} else {\r\n\t\t\t\tif (ch == '.' || ch == '.') result[i] = '.';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn parseFloat(result.join(\"\"));\r\n}\r\n\r\n/**\r\n * 文字列から数値を取り出す。\r\n * @param str 文字列\r\n * @param usefloat 浮動小数点数値を取り出すならtrue、整数値を取り出すならfalse。\r\n * 浮動小数点数値として取り出す場合、半角・全角のピリオドを小数点と見なす。\r\n * 数値と判断できなような複数のピリオドを含む場合は動作は保証されない。\r\n * @return 浮動小数点数値または整数値の配列\r\n */\r\nfunction pickupNumZ(str, usefloat) {\r\n var nums = new Array();\r\n var n = 0;\r\n var s = -1;\r\n var e = 0;\r\n var inNum = false;\r\n var fract = false;\r\n var size = str.length;\r\n for (var i = 0; i < size; i++) {\r\n var ch = str.charAt(i);\r\n if (isDigitZ(ch)) {\r\n if (!inNum) s = i;\r\n e = i;\r\n inNum = true;\r\n } else\r\n if (usefloat && (ch == '.' || ch == '.')) {\r\n if (inNum) {\r\n if (fract) {\r\n nums[n++] = parseFloatZ(str.substring(s, e+1));\r\n inNum = false;\r\n fract = false;\r\n } else {\r\n fract = true;\r\n }\r\n }\r\n } else {\r\n if (inNum) nums[n++] = parseFloatZ(str.substring(s, e+1));\r\n inNum = false;\r\n }\r\n }\r\n if (inNum) nums[n++] = parseFloatZ(str.substring(s, e+1));\r\n return nums;\r\n}\r\n\r\n/**\r\n * 1~2桁の数の前に\"0\"を補って2桁にする。\r\n * @param num 1~2桁の数\r\n * @return 2桁の数\r\n */\r\nfunction toDigit2(num) {\r\n\treturn (num > 9) ? \"\"+ num : \"0\" + num;\r\n}\r\n\r\n/**\r\n * 区切り文字の位置を返す。\r\n * @param str 半角または全角の文字を含む文字列\r\n * @param delimits 区切り文字となる文字を複数していした文字列。\r\n * @return どれかの区切り文字が見つかればその位置を返す。区切り文字が無い場合は負値。\r\n */\r\nfunction getDelimiterPos(str, delimits) {\r\n\tfor (var i = 0; i < str.length; i++)\r\n\t\tif (delimits.indexOf(str.charAt(i)) >= 0)\r\n\t\t\treturn i;\r\n\treturn -1;\r\n}\r\n\r\n/**\r\n * 区切り文字より前の文字列を返す。\r\n * [例]\r\n * cutTail(\"土浦小学校(大手町13-32)\", \"([{([{\") => 土浦小学校\r\n * @param str 半角または全角の文字を含む文字列\r\n * @param delimits 区切り文字となる文字を複数していした文字列。\r\n * @return 区切り文字よりも前の文字列。区切り文字無い場合は元の文字列。\r\n */\r\nfunction cutTail(str, delimits) {\r\n\tvar p = getDelimiterPos(str, delimits);\r\n\treturn (p >= 0) ? str.substring(0, p) : str;\r\n}\r\n\r\n/**\r\n * 区切り文字の間の文字列を返す。\r\n * [例]\r\n * getMiddle(\"土浦小学校(大手町13・32)\", \"([{([{\", \")]})]}\") == \"大手町13・32\"\r\n * @param str 半角または全角の文字を含む文字列\r\n * @param sd 前の区切り文字となる文字を複数していした文字列\r\n * @param ed 後の区切り文字となる文字を複数していした文字列\r\n * @return 区切り文字に挟まれた文字列。前の区切り文字がない場合は元の文字列。\r\n */\r\nfunction getMiddle(str, sd, ed) {\r\n\tvar p = getDelimiterPos(str, sd);\r\n\tif (p < 0) return str;\r\n\tstr = str.substring(p+1);\r\n\treturn cutTail(str, ed);\r\n}\r\n\r\n/*\r\n * 区切り文字の外の文字列を返す。\r\n */\r\nfunction delMiddle(str, sd, ed) {\r\n\tvar s = getDelimiterPos(str, sd);\r\n\tif (s < 0) return str;\r\n\tvar e = getDelimiterPos(str, ed);\r\n\tif (e < 0) return str;\r\n\treturn str.substring(0, s) + \" \" + str.substring(e + 1, str.length);\r\n}\r\n\r\n/**\r\n * 文字列中で半角化可能な文字を全て半角にして返す。\r\n * [例]\r\n * toHankaku(\"土浦小学校(大手町13・32)\") => 大手町13-32\r\n * @param str 文字列\r\n * @return 半角化可能な文字がすべて半角化された文字列\r\n */\r\nfunction toHankaku(str) {\r\n\tvar result = new Array(str.length);\r\n\tfor (var i = 0; i < str.length; i++) {\r\n\t\tvar ch = str.charAt(i);\r\n\t\tvar p = zenStr.indexOf(ch);\r\n\t\tif (p >= 0) {\r\n\t\t\tresult[i] = hanStr[p];\r\n\t\t} else {\r\n\t\t\tresult[i] = ch;\r\n\t\t}\r\n\t}\r\n\treturn result.join(\"\");\r\n}\r\n\r\n/**\r\n * 文字列の途中以降を抽出する。\r\n * substring1(\"平23\",1) => \"23\"\r\n */\r\nfunction substring1(str,begin) {\r\n return str.substring(begin);\r\n}\r\n\r\n/**\r\n * 文字列から一部を抽出する。\r\n * substring2(\"平成23年\",2,4) => \"23\"\r\n */\r\nfunction substring2(str,begin,end) {\r\n return str.substring(begin,end);\r\n}\r\n\r\n/**\r\n * 文字列から最初に出現した固定小数点数値を抽出して返す。\r\n * @param str 文字列 (string)\r\n * @return 固定小数点数値の度数(double)\r\n */\r\nfunction pickupNum(str) {\r\n var size = str.length;\r\n var s = -1;\r\n var e = 0;\r\n var fract = false;\r\n for (var i = 0; i < size; i++) {\r\n var ch = str.charAt(i);\r\n if ('0' <= ch && ch <= '9') {\r\n if (s < 0) s = i;\r\n e = i;\r\n } else\r\n if (ch == '.') {\r\n if (fract) break;\r\n fract = true;\r\n } else {\r\n if (s >= 0) break;\r\n }\r\n }\r\n if (s >= 0)\r\n return parseFloat(str.substring(s, e+1));\r\n else\r\n return \"\";\r\n}\r\n\r\n/**\r\n * 文字列から数値を抽出して出現順に配列にして返す。\r\n * @param str 文字列 (string)\r\n * @return 数値(double)の配列\r\n */\r\nfunction pickupNums(str) {\r\n var nums = new Array();\r\n var n = 0;\r\n var s = -1;\r\n var e = 0;\r\n var inNum = false;\r\n var fract = false;\r\n var size = str.length;\r\n for (var i = 0; i < size; i++) {\r\n var ch = str.charAt(i);\r\n if ('0' <= ch && ch <= '9') {\r\n if (!inNum) s = i;\r\n e = i;\r\n inNum = true;\r\n } else\r\n if (ch == '.') {\r\n if (inNum) {\r\n if (fract) {\r\n nums[n++] = parseFloat(str.substring(s, e+1));\r\n inNum = false;\r\n fract = false;\r\n } else {\r\n fract = true;\r\n }\r\n }\r\n } else {\r\n if (inNum) nums[n++] = parseFloat(str.substring(s, e+1));\r\n inNum = false;\r\n fract = false;\r\n }\r\n }\r\n if (inNum) nums[n++] = parseFloat(str.substring(s, e+1));\r\n return nums;\r\n}\r\n\r\n/**\r\n * 文字列から数値を1個以上取り出し、それらの平均値を求める。\r\n */\r\nfunction average(str) {\r\n\tvar nums = pickupNums(str);\r\n\tvar n = nums.length;\r\n\tvar val = 0.0;\r\n\tfor (var i = 0; i < n; i++)\r\n\t\tval += val[i];\r\n\treturn val / n;\r\n}\r\n\r\n/**\r\n * 文字列1の先頭に文字列2が含まれていたらそれを除いた文字列を返す。\r\n * 含まれていない場合は、文字列1を返す。\r\n * 使用例: $removeStr2(\"茨城県つくば市\",\"茨城県\") => つくば市\r\n * @param s1 文字列1\r\n * @param s2 文字列2\r\n * @return 文字列1の先頭の文字列2を取り除く\r\n */\r\nfunction removeStr2(s1, s2) {\r\n\tvar i = s1.indexOf(s2);\r\n\tif (i == 0) {\r\n\t\treturn s1.substring(s2.length);\r\n\t} else {\r\n\t\treturn s1;\r\n\t}\r\n}\r\n\r\n/*\r\n * 全角文字列を半角文字列に変換する。\r\n */\r\nfunction zen2han(input) {\r\n\than = \"0123456789.,-+\";\r\n\tzen = \"0123456789.,-+\";\r\n\tstr = \"\";\r\n\tfor (i=0; i= 0) c = han.charAt(n);\r\n\t\tstr += c;\r\n\t}\r\n\treturn str;\r\n}\r\n\r\n/*\r\n * 文字列strの最後からn番目の文字がcならr1を返し、そうでなければr2を返す。\r\n */\r\nfunction select2(str, n, c, r1, r2) {\r\n\tif (str.charAt(str.length - n) == c)\r\n\t\treturn r1;\r\n\telse\r\n\t\treturn r2;\r\n}\r\n\r\n/*\r\n * 前後の半角文字を消す。\r\n */\r\nfunction delHankaku(str) {\r\n\tvar len = str.length;\r\n\tfor(var i = 0; i < len; i++) {\r\n\t\tvar c = str.charAt(i);\r\n\t\tif (c < ' ' || '~' < c)\r\n\t\t\tbreak;\r\n\t}\r\n\tvar b = i;\r\n\tfor(; i < len; i++) {\r\n\t\tc = str.charAt(i);\r\n\t\tif (' ' <= c && c <= '~')\r\n\t\t\tbreak;\r\n\t}\r\n\treturn str.substring(b, i);\r\n}\r\n\r\n/*\r\n * strのi番目(iが負のときは最後から-i番目)の文字がcならx、そうでなければyを返す。\r\n */\r\nfunction charChoice(str, i, c, x, y) {\r\n\tif (i < 0)\r\n\t\ti = str.length + i;\r\n\tif (str.charAt(i) == c)\r\n\t\treturn x;\r\n\telse\r\n\t\treturn y;\r\n}\r\n\r\n/*\r\n * 条件condが成立すればx、しなければyを返す。\r\n */\r\nfunction condition(cond, x, y) {\r\n\treturn cond ? x : y;\r\n}\r\n\r\n/*\r\n * 文字列から(先頭の)数値を抽出する。\r\n * @param str 文字列\r\n * @param defnum 数値以外の文字列の場合に返す数値\r\n * @return 数値\r\n */\r\nfunction defaultNum(str, defnum) {\r\n\tif (str == \"\" || str == \"-\" || str == \"-\") return defnum;\r\n\tvar nums = pickupNumZ(str, true);\r\n\tif (nums.length == 0) return defnum;\r\n\treturn nums[0];\r\n}\r\n\r\n/*\r\n * 文字列から空白を除去する。\r\n * @param str 文字列\r\n * @return 空白を除去した文字列\r\n */\r\nfunction skipSpace(str) {\r\n\tvar result = \"\";\r\n\tvar size = str.length;\r\n\tfor (var i = 0; i < size; i++) {\r\n\t\tvar ch = str.charAt(i);\r\n\t\tif (ch != \" \" && ch != \" \") {\r\n\t\t\tresult += ch;\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}\r\n" }, "created_at": "2011-12-21T13:58:09+09:00", "resource_url": "http://wedata.net/items/56194" } ])