001 /* 002 * Copyright (c) 2009 The openGion Project. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 013 * either express or implied. See the License for the specific language 014 * governing permissions and limitations under the License. 015 */ 016 package org.opengion.fukurou.util; 017 018 import java.awt.Color; 019 import java.io.PrintWriter; 020 import java.io.StringWriter; 021 import java.io.UnsupportedEncodingException; 022 import java.net.URLEncoder; 023 import java.net.URLDecoder; 024 import java.util.ArrayList; 025 import java.util.Arrays; 026 import java.util.Enumeration; 027 import java.util.HashMap; 028 import java.util.Iterator; 029 import java.util.Map; 030 import java.util.StringTokenizer; 031 import java.util.Locale ; // 5.7.2.3 (2014/01/31) 032 import java.nio.charset.Charset; // 5.5.2.6 (2012/05/25) 033 034 035 /** 036 * StringUtil.java ã¯ã€å?通的ã«ä½¿ç”¨ã•れã‚?String関連メソãƒ?ƒ‰ã‚’集ç´?—ãŸã?クラスã§ã™ã? 037 * 038 * @og.group ユーãƒ?‚£ãƒªãƒ?‚£ 039 * 040 * @version 4.0 041 * @author Kazuhiko Hasegawa 042 * @since JDK5.0, 043 */ 044 public final class StringUtil { 045 046 /** ãƒãƒƒãƒ•ã‚¡ã®åˆæœŸå®¹é‡ã‚’通常より多ã„ç›®ã«è¨å®šã—ã¾ã™ã?(200) */ 047 private static final int BUFFER_MIDDLE = 200; 048 049 /** シスãƒ?ƒ ä¾å˜ã?改行記å·ã‚’ã‚»ãƒ?ƒˆã—ã¾ã™ã? */ 050 private static final String CR = System.getProperty("line.separator"); 051 052 /** 053 * プラãƒ?ƒˆãƒ•ォーãƒ?¾å˜ã?ãƒ?ƒ•ォルトã? Charset ã§ã™ã? 054 * プラãƒ?ƒˆãƒ•ォーãƒ?¾å˜æ?ã‚’è?æ…®ã™ã‚‹å ´åˆã?エンコード指定ã§ä½œæ?ã—ã¦ãŠã事をãŠå‹§ã‚ã—ã¾ã™ã? 055 * 056 * @og.rev 5.5.2.6 (2012/05/25) findbugs対å¿? 057 */ 058 public static final Charset DEFAULT_CHARSET = Charset.defaultCharset() ; 059 060 /** 061 * ãƒ?ƒ•ォルトコンストラクターをprivateã«ã—ã¦ã€? 062 * オブジェクトã?生æ?ã‚’ã•ã›ãªã?‚ˆã?«ã™ã‚‹ã€? 063 * 064 */ 065 private StringUtil() {} 066 067 /** 068 * UTF-8 ã§ã€URLエンコードを行ã„ã¾ã™ã? 069 * ã“ã?メソãƒ?ƒ‰ã¯ã€JDK1.4 以上ã§ãªã?¨ä½¿ç”¨ã§ãã¾ã›ã‚“ã€? 070 * 071 * @param value エンコードã™ã‚‹æ–‡å—å? 072 * 073 * @return æŒ?®šã?æ–?—コードã§?µ?²?¬ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰ã•ã‚ŒãŸæ–?—å? 074 */ 075 public static String urlEncode( final String value ) { 076 if( value == null ) { return ""; } 077 078 try { 079 return URLEncoder.encode( value,"UTF-8" ); 080 } 081 catch( UnsupportedEncodingException ex ) { 082 String errMsg = "UnsupportedEncodingException [UTF-8]" + CR 083 + ex.getMessage() ; 084 throw new RuntimeException( errMsg,ex ); 085 } 086 catch( RuntimeException ex2 ) { // 3.6.0.0 (2004/09/17) 087 String errMsg = "予期ã›ã¬ã‚¨ãƒ©ãƒ¼ value=[" + value + "] , encode=[UTF-8]" + CR 088 + ex2.getMessage(); 089 throw new RuntimeException( errMsg,ex2 ); 090 } 091 } 092 093 /** 094 * UTF-8 ã§URLエンコードã•ã‚ŒãŸæ–?—å?をデコードã—ã¾ã™ã? 095 * ã“ã?メソãƒ?ƒ‰ã¯ã€JDK1.4 以上ã§ãªã?¨ä½¿ç”¨ã§ãã¾ã›ã‚“ã€? 096 * 097 * @og.rev 5.4.5.0 追åŠ? 098 * @param value ãƒ?‚³ãƒ¼ãƒ‰ã™ã‚‹æ–‡å—å? 099 * 100 * @return ãƒ?‚³ãƒ¼ãƒ‰ã•ã‚ŒãŸæ–?—å? 101 */ 102 public static String urlDecode( final String value ) { 103 try { 104 return URLDecoder.decode( value,"UTF-8" ); 105 } 106 catch( UnsupportedEncodingException ex ) { 107 String errMsg = "UnsupportedEncodingException [UTF-8]" + CR 108 + ex.getMessage() ; 109 throw new RuntimeException( errMsg,ex ); 110 } 111 catch( RuntimeException ex2 ) { // 3.6.0.0 (2004/09/17) 112 String errMsg = "予期ã›ã¬ã‚¨ãƒ©ãƒ¼ value=[" + value + "] , encode=[UTF-8]" + CR 113 + ex2.getMessage(); 114 throw new RuntimeException( errMsg,ex2 ); 115 } 116 } 117 118 /** 119 * æ–?—å?ã®å¾Œã‚ã®ã‚¹ãƒšã?スを削除ã—ã¾ã™ã? 120 * String クラス㮠trim()メソãƒ?ƒ‰ã¯ã€æ–‡å—å?ã®ä¸¡æ–¹ã®ã‚¹ãƒšã?スを削除ã—ã¾ã™ãŒã€? 121 * ã“ã? rTrim( String ) ã¯ã€å¾Œã‚ã®åŠè§’スペã?スã®ã¿ã€è©°ã‚ã¾ã™ã? 122 * 注æ„ï¼?\u0020' (スペã?スæ–?? よりå°ã•ã?–‡å—ã‚’åˆ?‚Šå–りã¾ã™ã? 123 * 124 * @param str å…??æ–?—å? 125 * 126 * @return 後ã‚ã®åŠè§’スペã?スを詰ã‚ãŸã€æ–°ã—ã„æ–?—å? 127 */ 128 public static String rTrim( final String str ) { 129 if( str == null ) { return null; } 130 int count = str.length(); 131 132 int len = count; 133 134 while ((0 < len) && (str.charAt(len-1) <= ' ')) { 135 len--; 136 } 137 return (len < count) ? str.substring(0, len) : str; 138 } 139 140 /** 141 * æ–?—å?ã®å¾Œã‚ã‹ã‚‰ã€? .0" ã®æ–?—を削除ã—ãŸæ•°å—åž‹æ–?—å?ã‚’è¿”ã—ã¾ã™ã? 142 * æ•°å—åž‹æ–?—å?ã¯ã€å?力文å—å?ã®å¾Œã‚㮠スペã?スã€å°æ•°ç‚¹ã€ã‚¼ãƒã‚’削除ã—ã¾ã™ã? 143 * ã¾ãŸã?å…ˆé?ãŒã?"." ã§å§‹ã¾ã‚‹å?åˆã?ã€?0" を追åŠ?—ã¾ã™ã? 144 * ä¾? "123.00" â‡?"123" , ".123" â‡?"0.123" 145 * 146 * @og.rev 3.8.8.1 (2007/01/10) æ–°è¦ä½œæ? 147 * 148 * @param str å…??æ–?—å? 149 * 150 * @return æ•°å—æ–‡å—å?化ã•れãŸã€æ–°ã—ã„æ–?—å? 151 */ 152 public static String toNumber( final String str ) { 153 if( str == null ) { return null; } 154 155 String rtn = str.trim() ; 156 157 int adrs = rtn.indexOf( '.' ); 158 int count = rtn.length(); 159 int len = count; 160 161 if( adrs >= 0 ) { 162 while ((adrs < len) && ( ".0".indexOf( rtn.charAt(len-1) ) >= 0 )) { 163 len--; 164 } 165 } 166 167 if( len < count ) { rtn = rtn.substring(0, len); } 168 if( adrs == 0 ) { rtn = "0" + rtn; } 169 170 return rtn ; 171 } 172 173 /** 174 * æ–?—å?ã®å‰æ–¹ã®ã‚¼ãƒ(??を削除ã—ã¾ã™ã? 175 * å…ˆé?ã®?を削除ã™ã‚‹ã¾ãˆã«ã€trim ã—ã¦ã€ã‚¹ãƒšã?スを削除ã—ã¦ãŠãã¾ã™ã? 176 * 177 * @og.rev 3.5.4.5 (2004/01/23) æ–°è¦è¿½åŠ? 178 * 179 * @param in å…??æ–?—å? 180 * 181 * @return 剿–¹ã®ã‚¼ãƒ(??を削除ã—ãŸã€æ–°ã—ã„æ–?—å? 182 */ 183 public static String lTrim0( final String in ) { 184 if( in == null ) { return null; } 185 String str = in.trim(); 186 int count = str.length(); 187 188 int len = 0; 189 190 while ((count > len) && (str.charAt(len) == '0')) { 191 len++; 192 } 193 194 if( len == 0 ) { return str; } // å…ˆé?ãŒã‚¼ãƒã§ãªã?? 195 else if( len == count ) { return "0"; } // ã™ã¹ã¦ãŒã‚¼ãƒ 196 else if( str.charAt(len) == '.' ) { return "0" + str.substring(len); } 197 else { return str.substring(len); } 198 } 199 200 /** 201 * æ–?—å?é…å?ã®å?¦ç´??後ã‚ã®ã‚¹ãƒšã?スを削除ã—ã¾ã™ã? 202 * 個ã?ã®é…å?è¦ç´?«å¯¾ã—ã¦ã€rTrim( String str ) ã‚’é©ç”¨ã—ã¾ã™ã? 203 * å…??æ–?—å?é…å?ã«ç›´æŽ¥ä½œç”¨ã™ã‚‹ã®ã§ã¯ãªãã?æ–°ã—ã„æ–?—å?é…å?ã« 204 * çµæžœã‚’コピã?ã—ã¦è¿”ã—ã¾ã™ã? 205 * ãŸã ã—ã?å…??æ–?—å?é…å?ãŒã?null ã‹ã?length == 0 ã®å ´åˆã?ã€? 206 * å…??æ–?—å?é…å?(アドレス)ã‚’è¿”ã—ã¾ã™ã? 207 * 注æ„ï¼?\u0020' (スペã?スæ–?? よりå°ã•ã?–‡å—ã‚’åˆ?‚Šå–りã¾ã™ã? 208 * 209 * @param str å…??æ–?—å? 210 * 211 * @return 後ã‚ã®åŠè§’スペã?スを詰ã‚ãŸã€æ–°ã—ã„æ–?—å? 212 */ 213 public static String[] rTrims( final String[] str ) { 214 if( str == null || str.length == 0 ) { return str; } 215 216 String[] rtn = new String[ str.length ]; 217 for( int i=0; i<str.length; i++ ) { 218 rtn[i] = rTrim( str[i] ); 219 } 220 return rtn ; 221 } 222 223 /** 224 * æ–?—å?ã®å‰å¾Œã?ãƒ?ƒ–ルクオートをå–り外ã—ã¾ã™ã? 225 * å‰å¾Œã«ãƒ?ƒ–ルクオートãŒå…¥ã£ã¦ã?ªã‘れã°ã€ãã®ã¾ã¾ã®æ–?—å?ã‚’è¿”ã—ã¾ã™ã? 226 * å‰å¾Œã«å…¥ã£ã¦ã?ªã?ç‰?–¹ã®ã¿ãªã©)å ´åˆã‚‚ã€ãã®ã¾ã¾ã®æ–?—å?ã‚’è¿”ã—ã¾ã™ã? 227 * 228 * @param str å…??æ–?—å? 229 * 230 * @return ãƒ?ƒ–ルクオートをå–り外ã—ãŸæ–°ã—ã„æ–?—å? 231 */ 232 public static String csvOutQuote( final String str ) { 233 if( str == null ) { return null; } 234 int end = str.length(); 235 236 if( end < 2 || str.charAt(0) != '"' || str.charAt( end-1 ) != '"' ) { 237 return str; 238 } 239 240 return str.substring( 1,end-1 ) ; 241 } 242 243 /** 244 * å†?ƒ¨ã§ä½¿ã‚れã‚?byte[] ã‹ã‚‰ String 生æ? メソãƒ?ƒ‰ 245 * 246 * @param byteValue 変æ›ã™ã‚‹ãƒã‚¤ãƒˆå? 247 * @param start 変æ›é–‹å§‹ã‚¢ãƒ‰ãƒ¬ã‚¹ 248 * @param length 変æ›ãƒã‚¤ãƒˆæ•° 249 * @param encode 変æ›ã™ã‚‹æ–?—エンコーãƒ? 250 * 251 * @return 変æ›å¾Œæ–‡å—å? 252 */ 253 public static String makeString( final byte[] byteValue, final int start, final int length,final String encode ) { 254 255 if( encode.startsWith( "Unicode" ) ) { 256 String errMsg = "Unicodeæ–?—å?ã¯ã€å¤‰æ›ã§ãã¾ã›ã‚“ã€?" + encode + "]" + CR; 257 throw new RuntimeException( errMsg ); 258 } 259 260 String rtn = null; 261 if( byteValue != null ) { 262 try { 263 // encode コードã§å¤‰æ›ã•れã¦ã?‚‹ byte[] ã‚’ã?String ã«å¤‰æ›ã€? 264 rtn = new String( byteValue,start,length,encode ); 265 } catch( UnsupportedEncodingException ex ) { // 変æ›ã‚³ãƒ¼ãƒ‰ãŒå˜åœ¨ã—ãªã?‚¨ãƒ©ãƒ¼ 266 String errMsg = "æ–?—変æ›ã‚³ãƒ¼ãƒ‰ãŒå˜åœ¨ã—ã¾ã›ã‚“ã€?" + encode + "]" + CR 267 + ex.getMessage() ; 268 throw new RuntimeException( errMsg,ex ); 269 } 270 } 271 return rtn; 272 } 273 274 /** 275 * æŒ?®šã?æ–?—å?ã‚’ãƒã‚¤ãƒˆã‚³ãƒ¼ãƒ‰ã«å¤‰æ›ã—ã¾ã™ã? 276 * å¼•æ•°ã®æ–?—å?ã?null ã®å ´åˆã?ã€return ã¯ã€byte[0] ã‚’è¿”ã—ã¾ã™ã? 277 * 278 * @param value 変æ›ã™ã‚‹ã‚¹ãƒˆãƒªãƒ³ã‚°å€¤ 279 * @param encode 変æ›ã™ã‚‹æ–?—エンコーãƒ? 280 * 281 * @return 変æ›å¾Œæ–‡å—å? 282 */ 283 public static byte[] makeByte( final String value,final String encode ) { 284 byte[] rtnByte = new byte[0]; 285 if( value != null ) { 286 try { 287 rtnByte = value.getBytes( encode ); // byte[] ã« encode コードã§å¤‰æ›ã€? 288 } catch( UnsupportedEncodingException ex ) { // 変æ›ã‚³ãƒ¼ãƒ‰ãŒå˜åœ¨ã—ãªã?‚¨ãƒ©ãƒ¼ 289 String errMsg = "æ–?—変æ›ã‚³ãƒ¼ãƒ‰ãŒå˜åœ¨ã—ã¾ã›ã‚“ã€?" + encode + "]" + CR 290 + ex.getMessage(); 291 throw new RuntimeException( errMsg,ex ); 292 } 293 } 294 return rtnByte; 295 } 296 297 /** 298 * åŠè§’スペã?スã§å›ºå®šé•·(åŠè§’æ›ç®—ã?æ•°)ã«å¤‰æ›ã—ãŸæ–?—å?ã‚’è¿”ã—ã¾ã™ã? 299 * åŠè§’スペã?ス埋ã‚ã¯ã€æ–‡å—ãŒåŠè§’ã?全角混在ã§ã‚‚ã‹ã¾ã?¾ã›ã‚“ã€? 300 * å†?ƒ¨ã«ã‚»ãƒ?ƒˆã—ãŸæ–?—å?ã¯ã€å¤‰åŒ–ã—ã¾ã›ã‚“ã€? 301 * 302 * @param str Fill埋ã‚ã™ã‚‹æ–?—å? 303 * @param su_fill Fill埋ã‚ã™ã‚‹æ–?—å?ã®é•·ã•ã?(åŠè§’æ›ç®—ã?æ•°) 304 * 305 * @return Fill埋ã‚ã—ãŸæ–°ã—ã„Stringã‚’è¿”ã™ã€? 306 */ 307 public static String stringXFill( final String str,final int su_fill ) { 308 char[] charValue ; 309 310 if( str == null ) { charValue = new char[0]; } 311 else { charValue = str.toCharArray(); } 312 int len = charValue.length; 313 314 if( su_fill < len ) { 315 String errMsg = "å…??æ–?—æ•°ãŒãƒ•ォーãƒ?‚ˆã‚Šé•·ã?§ã™ã?(æ•°å—ãŒå£Šã‚Œã¾ã™ã?)" 316 + "su_fill[" + su_fill + "], len[" + len + "]" + CR 317 + "input=[" + str + "]" + CR; 318 throw new RuntimeException( errMsg ); 319 } 320 321 char[] charbuf = new char[ su_fill ]; // ç§»ã?char é…å?ã‚’æ–°è¦ä½œæ? 322 Arrays.fill( charbuf,' ' ); 323 System.arraycopy( charValue,0,charbuf,0,len ); 324 325 return new String( charbuf ); // コピã?ã—ãŸé…å?å…¨ã¦ã‚’æ–‡å—å?ã«å¤‰æ› 326 } 327 328 /** 329 * åŠè§’スペã?スã§å›ºå®šé•·(åŠè§’æ›ç®—ã?æ•°)ã«å¤‰æ›ã—ãŸæ–?—å?ã‚’è¿”ã—ã¾ã™ã? 330 * åŠè§’スペã?ス埋ã‚ã¯ã€æ–‡å—ãŒåŠè§’ã?全角混在ã§ã‚‚ã‹ã¾ã?¾ã›ã‚“ã€? 331 * å†?ƒ¨ã«ã‚»ãƒ?ƒˆã—ãŸæ–?—å?ã¯ã€å¤‰åŒ–ã—ã¾ã›ã‚“ã€? 332 * 333 * @param str Fill埋ã‚ã™ã‚‹æ–?—å? 334 * @param su_fill Fill埋ã‚ã™ã‚‹æ–?—å?ã®é•·ã•ã?(åŠè§’æ›ç®—ã?æ•°) 335 * @param encode Fill埋ã‚ã™ã‚‹æ–?—å?ã®æ–?—エンコーãƒ? 336 * 337 * @return Fill埋ã‚ã—ãŸæ–°ã—ã„Stringã‚’è¿”ã™ã€? 338 */ 339 public static String stringFill( final String str,final int su_fill,final String encode ) { 340 if( su_fill < 0 ) { 341 String errMsg = "æŒ?®šæ–‡å—æ•°ãŒè²?§ã™ã?[" + su_fill + "]"; 342 throw new RuntimeException( errMsg ); 343 } 344 345 byte[] byteValue = makeByte( str,encode ); 346 int len = byteValue.length; 347 348 // å†?ƒ¨æ–?—å?ãŒæŒ‡å®šé•·ã‚ˆã‚Šé•·ã??å? 349 if( len >= su_fill ) { 350 return makeString( byteValue,0,su_fill,encode ); 351 } 352 else { 353 byte[] space = makeByte( " ",encode ); 354 int spaceLen = space.length ; 355 if( spaceLen == 4 ) { // encode ãŒã?UnicodeLittle ã®å ´åˆã?特殊å?ç? 356 space[0] = space[2]; 357 space[1] = space[3]; 358 spaceLen = 2; 359 } 360 byte[] bytebuf = new byte[ su_fill ]; 361 for( int i=0; i<len; i++ ) { bytebuf[i] = byteValue[i]; } 362 363 int k = 0; 364 for( int j=len; j<su_fill; j++ ) { // ä½™ã£ãŸéƒ¨åˆ??ã€ã‚¹ãƒšã?ス埋゠365 if( k >= spaceLen ) { k = 0; } 366 bytebuf[j] = space[k++]; 367 } 368 return makeString( bytebuf,0,su_fill,encode ); // æ–°ãŸã«ã€ã™ã¹ã¦ã®é•·ã•ã?部åˆ?–‡å—å?を作æ?ã™ã‚‹ã€? 369 } 370 } 371 372 /** 373 * æ•´æ•°ã®ãƒ•ォーãƒ? 12 ã§ã€æ•´æ•°éƒ¨ ?‘ï¼’æ¡ã‚’表ã?ã«åˆã£ãŸæ–°ã—ã„æ–?—å?を作りã€ãれを返ã—ã¾ã™ã? 374 * 実行ã§ãã‚‹ã®ã¯ã€æ•´æ•°ã® String ã«å¯¾ã—ã¦ã®ã¿ã§ã™ã? 375 * å†?ƒ¨ã«ã‚»ãƒ?ƒˆã—ãŸæ–?—å?ã¯ã€å¤‰åŒ–ã—ã¾ã›ã‚“ã€? 376 * 377 * String str = StringUtil.intFill( "123",10 ); 378 * 379 * å®Ÿè¡Œçµæžœ??0000000123" 380 * 381 * @param str æ•´æ•°ã® String 382 * @param su_fill フォーãƒ?‚’è¡¨ã™æ•°å?( 12 ã§ã€æ•´æ•°éƒ¨ ?‘ï¼’æ¡ã‚’表ã? 383 * 384 * @return æ•´æ•°ã®ãƒ•ォーãƒ?«åˆã£ãŸæ–‡å—å? 385 */ 386 public static String intFill( final String str,final int su_fill ) { 387 if( su_fill < 0 ) { 388 String errMsg = "æŒ?®šæ–‡å—æ•°ãŒè²?§ã™ã?[" + su_fill + "]"; 389 throw new RuntimeException( errMsg ); 390 } 391 392 char[] charbuf = new char[ su_fill ]; // ç§»ã?char é…å?ã‚’æ–°è¦ä½œæ? 393 Arrays.fill( charbuf,'0' ); 394 395 if( str == null ) { return new String( charbuf ); } 396 397 char[] charValue = str.toCharArray(); 398 int len = charValue.length; 399 400 if( su_fill < len ) { 401 String errMsg = "å…??æ–?—æ•°ãŒãƒ•ォーãƒ?‚ˆã‚Šé•·ã?§ã™ã?(æ•°å—ãŒå£Šã‚Œã¾ã™ã?) su_fill[" + su_fill + "], len[" + len + "]"; 402 throw new RuntimeException( errMsg ); 403 } 404 405 System.arraycopy( charValue,0,charbuf,su_fill-len,len ); 406 407 return new String( charbuf ); // コピã?ã—ãŸé…å?å…¨ã¦ã‚’æ–‡å—å?ã«å¤‰æ› 408 } 409 410 /** 411 * 全角スペã?スã§å›ºå®šé•·(åŠè§’æ›ç®—ã?æ•°)ã«å¤‰æ›ã—ãŸæ–?—å?ã‚’è¿”ã—ã¾ã™ã? 412 * 413 * @param str Fill埋ã‚ã™ã‚‹æ–?—å? 414 * @param su_fill Fill埋ã‚ã™ã‚‹æ–?—å?ã®é•·ã•ã?(åŠè§’æ›ç®—ã?æ•°) 415 * @param encode Fill埋ã‚ã™ã‚‹æ–?—å?ã®æ–?—エンコーãƒ? 416 * 417 * @return 全角スペã?スã§Fill埋ã‚ã—ãŸæ–°ã—ã„Stringã‚’è¿”ã™ã€? 418 */ 419 public static String stringKFill( final String str,final int su_fill,final String encode ) { 420 if( su_fill < 0 ) { 421 String errMsg = "æŒ?®šæ–‡å—æ•°ãŒè²?§ã™ã?[" + su_fill + "]"; 422 throw new RuntimeException( errMsg ); 423 } 424 425 byte[] byteValue = makeByte( str,encode ); 426 int len = byteValue.length; 427 428 // å†?ƒ¨æ–?—å?ãŒæŒ‡å®šé•·ã‚ˆã‚Šé•·ã??å? 429 if( len >= su_fill ) { 430 return makeString( byteValue,0,su_fill,encode ); 431 } 432 else { 433 byte[] space = makeByte( "ã€?,encode ); 434 int spaceLen = space.length ; 435 byte[] bytebuf = new byte[ su_fill ]; 436 for( int i=0; i<len; i++ ) { bytebuf[i] = byteValue[i]; } 437 int k = 0; 438 for( int j=len; j<su_fill; j++ ) { // ä½™ã£ãŸéƒ¨åˆ??ã€ã‚¹ãƒšã?ス埋゠439 if( k >= spaceLen ) { k = 0; } 440 bytebuf[j] = space[k++]; 441 } 442 return makeString( bytebuf,0,su_fill,encode ); // æ–°ãŸã«ã€ã™ã¹ã¦ã®é•·ã•ã?部åˆ?–‡å—å?を作æ?ã™ã‚‹ã€? 443 } 444 } 445 446 /** 447 * å°æ•°ç‚¹ã®ãƒ•ォーãƒ?«åˆã£ãŸæ–°ã—ã„æ–?—å?ã‚’ä½œã‚Šã€æ–‡å—å?ã‚’è¿”ã—ã¾ã™ã? 448 * ç¾åœ¨ã¯ã€å°æ•°ç‚¹ãŒé?ã«ä»˜ã„ãŸã‚Šã€æœ€å¾Œã«ä»˜ãå ´åˆã?対応ã?ã—ã¦ã?¾ã›ã‚“ã€? 449 * フォーãƒ??ã€?2.4 ã§ã€?000000000010.1000 ã¨ã?†å½¢ã§ã€ãƒ”リオドをå«ã¿ã¾ã™ã? 450 * 451 * // åŠè§?整数部 10 æ¡?å°æ•°éƒ¨ ?•æ¡ã§å›ºå®šé•·ã®æ–?—ã‚’å¾—ã‚‹ã€? 452 * String str = StringUtil.realFill( "123.45" ,10.5 ) ; 453 * 454 * å®Ÿè¡Œçµæžœ??000000123.45000 455 * 456 * @param str æ•´æ•°ã® String 457 * @param su_fill フォーãƒ?‚’表ã™å®Ÿæ•° ( 12.4 ã§ã€æ•´æ•°éƒ¨ ?‘ï¼’æ¡ã?å°æ•°éƒ¨ ?”æ¡?計17æ¡?) 458 * 459 * @return value å°æ•°ç‚¹ã®ãƒ•ォーãƒ?–‡å—å? 460 */ 461 public static String realFill( final String str,final double su_fill ) { 462 if( su_fill < 0 ) { 463 String errMsg = "æŒ?®šæ–‡å—æ•°ãŒè²?§ã™ã?[" + su_fill + "]"; 464 throw new RuntimeException( errMsg ); 465 } 466 467 int su_seisu = (int)(su_fill); // æŒ?®šã?フォーãƒ??整数部をå–りå?ã™ã? 468 int su_shosu = (int)(su_fill*10 - su_seisu*10); // å°æ•°éƒ¨ã‚’å–りå?ã—ã™ã€? 469 char[] charbuf = new char[ su_seisu + su_shosu + 1 ]; // ç§»ã?char é…å? 470 Arrays.fill( charbuf,'0' ); 471 472 if( str == null ) { 473 charbuf[su_seisu] = '.' ; 474 return new String( charbuf ); 475 } 476 477 char[] charValue = str.toCharArray(); 478 int len = charValue.length; 479 480 // 検査ã™ã‚‹æ–?—å?ã®åŠ?·¥(検査æ–?—å?ã¯ã€ã‚¤ãƒ³ãƒ?ƒƒã‚¯ã‚¹ã®å€¤ã¨ãƒã‚¤ãƒˆæ•°ã§æ–?—数を求ã‚ã‚‹ã?) 481 // å°æ•°ç‚¹ã®ä½ç½®ã‚’求ã‚ã‚‹ã? 本当ã?ã€String クラス㮠indexOf ã§æ±‚ã‚ãšã?byte[] ã§æ¤œç´¢ã™ã¹ãã§ã‚ã‚‹ã€? 482 int valueindex = str.indexOf( '.' ); 483 if( valueindex < 0 ) { // valueform 自体ãŒã€åˆã£ã¦ã?ªã?? 484 String errMsg = "å…??æ–?—å?ã«å°æ•°ç‚¹ãŒã?å«ã¾ã‚Œã¾ã›ã‚“ã€?; 485 throw new RuntimeException( errMsg ); 486 } 487 int su_valueseisu = valueindex; // æ•´æ•°éƒ¨ã®æ–?—æ•°ã¯ã€å°æ•°ç‚¹ã®ä½ç½®ã¨åŒã˜ 488 int su_valueshosu = len - valueindex - 1 ; // å°æ•°éƒ¨ã®æ–?—æ•°ã¯ã€å?æ–?—æ•°?æ•´æ•°æ–?—æ•°?ï¼? 489 490 // フォーãƒ??æ•´æ•°æ–?—æ•° ー åŠ?·¥æ–?—ã?æ•´æ•°æ–?—部 ??転é€å?é…å?ä½ç½® 491 int to_index = su_seisu - su_valueseisu; 492 if( to_index < 0 ) { 493 String errMsg = "å…??æ•°å—ãŒã€ãƒ•ォーãƒ?‚ˆã‚Šé•·ã?§ã™ã?(æ•°å—ãŒå£Šã‚Œã¾ã™ã?) form[" + su_fill + "]"; 494 throw new RuntimeException( errMsg ); 495 } 496 int end_index; 497 // 転é€å?é…å?終äº?½ç½®ã¯ã€ãŠäº’ã„ã®å°æ•°éƒ¨ã®æ–?—æ•°ã«ã‚ˆã‚Šã€çŸã?–¹ã‚’é¸ã¶ã€? 498 if( su_shosu < su_valueshosu ) { end_index = su_seisu + su_shosu + 1; } 499 else { end_index = su_seisu + su_valueshosu + 1; } 500 501 int from_index = 0; 502 while( to_index < end_index ) { 503 charbuf[to_index++] = charValue[from_index++]; // 転é€?ç§»ã—æ›¿ã? 504 } 505 return new String( charbuf ); // コピã?ã—ãŸé…å?å…¨ã¦ã‚’æ–‡å—å?ã«å¤‰æ› 506 } 507 508 /** 509 * ストリングã®éƒ¨åˆ?–‡å—å?ã‚?åˆ¥ã®æ–?—å?ã«ç½®æ›ãˆãŸã‚¹ãƒˆãƒªãƒ³ã‚°ã‚’è¿”ã—ã¾ã™ã? 510 * 例ãˆã°,リターンコードを< br />ã«ç½®æ›ãˆã¦,ç”»é¢ä¸Šã«æ”¹è¡Œè¡¨ç¤ºã•ã›ã‚‹ãŒå¯èƒ½ã§ã™ã? 511 * 512 * @og.rev 5.0.0.1 (2009/08/15) ä¸è¦ãªã‚ªãƒ–ジェクトã?生æ?を抑制ã™ã‚‹ã€? 513 * 514 * @param target å…??æ–?—å? 515 * @param from ç½®æ›å?部åˆ?–‡å—å? 516 * @param to ç½®æ›å?部åˆ?–‡å—å? 517 * 518 * @return ç½®æ›ãˆãŸæ–‡å—å? 519 */ 520 public static String replace( final String target,final String from,final String to ) { 521 // if( target == null || from == null || to == null ) { return target; } 522 if( target == null || from == null || to == null || target.indexOf( from ) < 0 ) { return target; } 523 524 // StringBuilder strBuf = new StringBuilder( BUFFER_MIDDLE ); 525 StringBuilder strBuf = new StringBuilder( target.length() ); 526 527 int start = 0; 528 int end = target.indexOf( from,start ); 529 while( end >= 0 ) { 530 strBuf.append( target.substring( start,end ) ); 531 strBuf.append( to ); 532 start = end + from.length(); 533 end = target.indexOf( from,start ); 534 } 535 536 if( start > 0 ) { 537 strBuf.append( target.substring( start ) ); 538 return strBuf.toString(); 539 } 540 else { 541 return target; // 3.4.0.2 (2003/09/05) 542 } 543 } 544 545 /** 546 * 引数㮠AA:01 BB:02 CC:03 … å½¢å¼ã?ã€å?値:新値ã®?½?゚ー?½åŒºåˆ?‚Šæ–?—å?ã‚’å?ã«ã€? 547 * å…??を新値ã«ç½®ãæ›ãˆã¾ã™ã? 548 * ã“れã¯ã€?ƒ¨åˆ?½®æ›ã§ã¯ãªãã?完å?ä¸??ã§å‡¦ç?—ã¾ã™ã? 549 * caseStr ã?null ã‚??マッãƒã—ãªã‹ã£ãŸå?åˆã?ã€å?ã®å€¤ã‚’è¿”ã—ã¾ã™ã? 550 * ãã?å ´åˆã?ignoreCase=true ã¨ã—ã¦ã?‚‹å ´åˆã?ã€å?ã®æ–?—å? も大æ–?—ã«å¤‰æ›ã•れã¦è¿”ã•れã¾ã™ã? 551 * 552 * ã‚¼ãƒæ–?—å?ã‚’å?値ã‚?–°å€¤ã§ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯å¯èƒ½ã§ã™ãŒã€ã‚¹ãƒšã?スを使用ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“ã€? 553 * 554 * @og.rev 5.7.2.3 (2014/01/31) æ–°è¦è¿½åŠ? 555 * 556 * @param target å…??æ–?—å? 557 * @param caseStr ç½®æ›ãƒªã‚¹ãƒ?AA:01 BB:02 CC:03 … å½¢å¼?。null ã®å ´åˆã?ã€æ¯”è¼?—ãªã?? 558 * @param ignoreCase true:大æ–?—ã¨ã—ã¦æ¯”è¼?/ false:ãã?ã¾ã¾æ¯”è¼? 559 * 560 * @return å…??æ–?—å?ã‚’ç½®ãæ›ãˆãŸçµæžœã€‚ç½®æ›ãƒªã‚¹ãƒˆã«å˜åœ¨ã—ãªã‘れã°ã€å?ã®æ–?—å?ã‚’è¿”ã™ã€? 561 */ 562 public static String caseReplace( final String target,final String caseStr,final boolean ignoreCase ) { 563 if( target == null ) { return target; } 564 565 String rtn = (ignoreCase) ? target.toUpperCase(Locale.JAPAN) : target ; 566 567 if( caseStr != null ) { 568 String caseTmp = " " + caseStr.trim() + " " ; // CASEæ–?—å?ã®å½¢å¼ã‚’ãã‚ãˆã‚‹ã€? 569 570 int adrs = caseTmp.indexOf( " " + rtn + ":" ); // å‰ã‚¹ãƒšã?スã¨å¾Œã‚コãƒãƒ³ã§ã€å˜èªžã‚’確定ã™ã‚‹ã? 571 if( adrs >= 0 ) { 572 int st = caseTmp.indexOf( ':' , adrs+1 ); // æœ??ã®ã‚³ãƒãƒ³ã®ä½ç½®ã€‚å?値:新値 㮠新値 ã®å–å? 573 int ed = caseTmp.indexOf( ' ' , st+1 ); // コãƒãƒ³ã®æ¬¡ã‹ã‚‰ã€æœ€åˆã?スペã?スã®ä½ç½® 574 if( st >= 0 && ed >= 0 ) { 575 rtn = caseTmp.substring( st+1,ed ); // コãƒãƒ³ã®æ¬¡ã‹ã‚‰ã€ã‚¹ãƒšã?スã®å‰ã¾ã§ã‚’å?りå?ã™ã? 576 } 577 } 578 } 579 580 return rtn ; 581 } 582 583 /** 584 * Stringåž‹ã?é…å?ã‹ã‚‰ã€ã‚«ãƒ³ãƒ?,)ã§é€£çµã•れãŸString を作æ?ã—ã¾ã™ã? 585 * ã“れã¯?Œé?列を表示用ã«å¤‰æ›ã™ã‚‹ç‚ºã®ã‚‚ã?ã§ã™ã? 586 * array2line( array, ",", 0 ); ã¨åŒç‰ã§ã™ã? 587 * 588 * @param array å…??æ–?—å?é…å? 589 * 590 * @return ä¸??ã«å¤‰æ›ã—ãŸæ–?—å?(引数ãŒnullã®å ´åˆã?ã€?•·ã•ï¼ã?æ–?—å?ã‚’è¿”ã™) 591 */ 592 public static String array2csv( final String[] array ) { 593 return array2line( array, ",", 0 ); 594 } 595 596 /** 597 * Stringåž‹ã?é…å?ã‹ã‚‰ã€ã‚»ãƒ‘レーターã§é€£çµã•れãŸString を作æ?ã—ã¾ã™ã? 598 * ã“れã¯?Œé?列を表示用ã«å¤‰æ›ã™ã‚‹ç‚ºã®ã‚‚ã?ã§ã™ã? 599 * 600 * @param array å…??æ–?—å?é…å? 601 * @param separator 区åˆ?‚Šè¨˜å· 602 * 603 * @return ä¸??ã«å¤‰æ›ã—ãŸæ–?—å?(引数ãŒnullã®å ´åˆã?ã€?•·ã•ï¼ã?æ–?—å?ã‚’è¿”ã™) 604 */ 605 public static String array2line( final String[] array,final String separator ) { 606 return array2line( array, separator,0 ); 607 } 608 609 /** 610 * Stringåž‹ã?é…å?ã‹ã‚‰ã€ã‚»ãƒ‘レーターã§é€£çµã•れãŸString を作æ?ã—ã¾ã™ã? 611 * ã“れã¯?Œé?列を表示用ã«å¤‰æ›ã™ã‚‹ç‚ºã®ã‚‚ã?ã§ã™ã? 612 * 613 * @param array å…??æ–?—å?é…å? 614 * @param separator 区åˆ?‚Šè¨˜å· 615 * @param start é…å?ã®é€£çµé–‹å§‹ã‚¢ãƒ‰ãƒ¬ã‚¹ 616 * 617 * @return ä¸??ã«å¤‰æ›ã—ãŸæ–?—å?(引数ãŒnullã®å ´åˆã?ã€?•·ã•ï¼ã?æ–?—å?ã‚’è¿”ã™) 618 */ 619 public static String array2line( final String[] array,final String separator,final int start ) { 620 if( array == null || array.length <= start ) { return ""; } 621 622 StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE ); 623 624 rtn.append( valueOf( array[start] ) ); 625 for(int i=start+1; i < array.length; i++) { 626 rtn.append( separator ); 627 rtn.append( valueOf( array[i] ) ); 628 } 629 return rtn.toString(); 630 } 631 632 /** 633 * Enumerationã‹ã‚‰ã€ã‚ªãƒ–ジェクトé?列データを返ã—ã¾ã™ã? 634 * ã“れã¯?ŒEnumerationを表示用ã«å¤‰æ›ã™ã‚‹ç‚ºã®ã‚‚ã?ã§ã™ã? 635 * 636 * @param enume å…??Enumeration 637 * 638 * @return オブジェクトé?åˆ? 639 */ 640 public static Object[] enume2Array( final Enumeration<?> enume ) { // 4.3.3.6 (2008/11/15) Genericsè¦å‘Šå¯¾å¿? 641 if( enume == null || ! enume.hasMoreElements() ) { return new Object[0]; } 642 643 ArrayList<Object> obj = new ArrayList<Object>(); 644 645 while( enume.hasMoreElements() ) { 646 obj.add( enume.nextElement() ); 647 } 648 return obj.toArray(); 649 } 650 651 /** 652 * Enumerationã‹ã‚‰ã€ã‚ªãƒ–ジェクトé?列データを返ã—ã¾ã™ã? 653 * ã“れã¯?ŒEnumerationを表示用ã«å¤‰æ›ã™ã‚‹ç‚ºã®ã‚‚ã?ã§ã™ã? 654 * 655 * @param enume å…??Enumeration 656 * @param objs - é…å?ãŒååˆ?ªå¤§ãã•ã‚’æŒã¤å ´åˆã?ã€Vector ã®è¦ç´?Œæ ¼ç´ã•れるé…å?ã€? 657 * ãã†ã§ãªã??åˆã?ã€è¦ç´?‚’æ ¼ç´ã™ã‚‹ãŸã‚ã«åŒã˜å®Ÿè¡Œæ™‚ã®åž‹ã?æ–°ã—ã„é…å?ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚Œã‚? 658 * @return オブジェクトé?åˆ? 659 */ 660 public static Object[] enume2Array( final Enumeration<?> enume,final Object[] objs ) { // 4.3.3.6 (2008/11/15) Genericsè¦å‘Šå¯¾å¿? 661 if( enume == null || ! enume.hasMoreElements() ) { return objs ; } 662 663 ArrayList<Object> list = new ArrayList<Object>(); 664 665 while( enume.hasMoreElements() ) { 666 list.add( enume.nextElement() ); 667 } 668 return list.toArray( objs ); 669 } 670 671 /** 672 * Iteratorã‹ã‚‰ã€ã‚»ãƒ‘レーターã§é€£çµã•れãŸString を作æ?ã—ã¾ã™ã? 673 * ã“れã¯?ŒEnumerationを表示用ã«å¤‰æ›ã™ã‚‹ç‚ºã®ã‚‚ã?ã§ã™ã? 674 * 675 * @param ite å…??Iterator 676 * @param separator 区åˆ?‚Šè¨˜å· 677 * 678 * @return ä¸??ã«å¤‰æ›ã—ãŸæ–?—å? 679 */ 680 public static String iterator2line( final Iterator<?> ite,final String separator ) { 681 if( ite == null || ! ite.hasNext() ) { return ""; } 682 683 StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE ); 684 685 rtn.append( valueOf( ite.next() ) ); 686 while( ite.hasNext() ) { 687 rtn.append( separator ); 688 rtn.append( valueOf( ite.next() ) ); 689 } 690 return rtn.toString(); 691 } 692 693 /** 694 * カンãƒ?,)ã§é€£çµã•れ㟠String ã‚’ã?é…å?ã«åˆ?§£ã—ã¦ã€ãã®å€¤ã‚’è¿”ã—ã¾ã™ã? 695 * ã“れã¯?ŒãŸã¨ãˆã?ã€AAA,BBB,CCC ãªã©ã®ãƒªã‚½ãƒ¼ã‚¹ãƒ??ã‚¿ã‚’å—ã‘ã¦ã‹ã‚‰é…å?ã«å…¥ã‚Œç›´ã—ã¦ã€? 696 * メニューãªã‚Šãƒªã‚¹ãƒˆã‚’作æ?ã™ã‚‹ã®ã«ä¾¿åˆ©ã§ã™ã? 697 * è¦ç´?Œç©ºã®å ´åˆã?ã€å¿?šã‚«ãƒ³ãƒžã?é–“ã«ã‚¹ãƒšã?スをå?れã¦è¨˜è¿°ã—ã¦ãã ã•ã„ã€? 698 * åˆ?‰²å¾Œã?æ–?—å?ã®å‰å¾Œã?スペã?スã¯ã€å‰Šé™¤ã•れã¾ã™ã? 699 * 700 * @param csvData å…??ãƒ??ã‚¿ 701 * 702 * @return æ–?—å?é…å?(引数ãŒnullã€ã‚¼ãƒæ–?—å?ã®å ´åˆã?ã€ã‚µã‚¤ã‚º0ã®é…å?ã‚’è¿”ã™) 703 */ 704 public static String[] csv2Array( final String csvData ) { 705 return csv2Array( csvData, ',', 0 ); 706 } 707 708 /** 709 * 区åˆ?‚Šæ–?—ã§é€£çµã•れ㟠String ã‚’ã?é…å?ã«åˆ?§£ã—ã¦ã€ãã®å€¤ã‚’è¿”ã—ã¾ã™ã? 710 * ã“れã¯?ŒãŸã¨ãˆã?ã€AAA,BBB,CCC ãªã©ã®ãƒªã‚½ãƒ¼ã‚¹ãƒ??ã‚¿ã‚’å—ã‘ã¦ã‹ã‚‰é…å?ã«å…¥ã‚Œç›´ã—ã¦ã€? 711 * メニューãªã‚Šãƒªã‚¹ãƒˆã‚’作æ?ã™ã‚‹ã®ã«ä¾¿åˆ©ã§ã™ã? 712 * 連続ã—ãŸåŒºåˆ?‚Šæ–?—ã?ã€?¼‘æ–‡å—ã«åˆ?‰²ã—ã¾ã™ã? 713 * åˆ?‰²å¾Œã?æ–?—å?ã®å‰å¾Œã?スペã?スã¯ã€å‰Šé™¤ã•れã¾ã™ã? 714 * 715 * @param csvData å…??ãƒ??ã‚¿ 716 * @param separator 区åˆ?‚Šæ–?? 717 * 718 * @return æ–?—å?é…å?(引数ãŒnullã€ã‚¼ãƒæ–?—å?ã®å ´åˆã?ã€ã‚µã‚¤ã‚º0ã®é…å?ã‚’è¿”ã™) 719 */ 720 public static String[] csv2Array( final String csvData,final char separator ) { 721 return csv2Array( csvData,separator,0 ); 722 } 723 724 /** 725 * 区åˆ?‚Šæ–?—ã§é€£çµã•れ㟠String ã‚’ã?é…å?ã«åˆ?§£ã—ã¦ã€ãã®å€¤ã‚’è¿”ã—ã¾ã™ã? 726 * ã“れã¯?ŒãŸã¨ãˆã?ã€AAA,BBB,CCC ãªã©ã®ãƒªã‚½ãƒ¼ã‚¹ãƒ??ã‚¿ã‚’å—ã‘ã¦ã‹ã‚‰é…å?ã«å…¥ã‚Œç›´ã—ã¦ã€? 727 * メニューãªã‚Šãƒªã‚¹ãƒˆã‚’作æ?ã™ã‚‹ã®ã«ä¾¿åˆ©ã§ã™ã? 728 * 連続ã—ãŸåŒºåˆ?‚Šæ–?—ã?ã€?¼‘æ–‡å—ã«åˆ?‰²ã—ã¾ã™ã? 729 * åˆ?‰²å¾Œã?æ–?—å?ã®å‰å¾Œã?スペã?スã¯ã€å‰Šé™¤ã•れã¾ã™ã? 730 * 第?“ã?引数ã¯ã€ãƒªã‚¿ãƒ¼ãƒ³ã™ã‚‹é…å?ã®å€‹æ•°ã‚’指定ã—ã¾ã™ã?ãŸã ã—ã?第ä¸?¼•æ•°ãŒNULLã‚??ã‚¼ãƒæ–?—å? 731 * ãªã©ã®ä¸æ£ãªæƒ??ã®å ´åˆã?ã€??常ã¨åŒã˜ã?é•·ã•ゼãƒã®é…å?ã‚’è¿”ã—ã¾ã™ã? 732 * len=0 を指定ã™ã‚‹ã¨åˆ?§£ã—ãŸãƒ??ã‚¿ã®å€‹æ•°åˆ??é…å?を作æ?ã—ã¾ã™ã?æŒ?®šã?é•·ã•ãŒçŸã??åˆã?ã€? 733 * ãã“ã¾ã§åˆ??ã¿å–り込ã¿ã¾ã™ã?æŒ?®šã?é•·ã•ãŒé•·ã??åˆã?ã€ä½™å?ã«é…å?を作æ?ã—ã¾ã™ã? 734 * ã‚»ãƒ?ƒˆã•れるå?ã¯ã€?" ã§ã™ã? 735 * 736 * @og.rev 3.8.5.1 (2006/05/08) è¨å®šé?列ã?数を指定ã§ãるよã†ã«å¤‰æ›´ 737 * @og.rev 3.8.8.2 (2007/01/26) åˆ?‰²å¾Œã?値ã®å‰å¾Œã?スペã?スã¯å‰Šé™¤ã—ã¾ã™ã? 738 * 739 * @param csvData å…??ãƒ??ã‚¿ 740 * @param separator 区åˆ?‚Šæ–?? 741 * @param len æŒ?®šã?é•·ã•ã?é…å?ã§è¿”ã—ã¾ã™ã? 742 * 743 * @return æ–?—å?é…å?(引数ãŒnullã€ã‚¼ãƒæ–?—å?ã®å ´åˆã?ã€ã‚µã‚¤ã‚º0ã®é…å?ã‚’è¿”ã™) 744 */ 745 public static String[] csv2Array( final String csvData,final char separator, final int len ) { 746 if( csvData == null || csvData.length() == 0 ) { return new String[0] ; } 747 748 CSVTokenizer token = new CSVTokenizer( csvData,separator ); 749 750 int count = (len > 0 ) ? len : token.countTokens() ; 751 String[] rtn = new String[ count ]; 752 int i = 0; 753 for( ; i<count && token.hasMoreTokens() ; i++ ) { 754 rtn[i] = (token.nextToken()).trim(); // 3.8.8.2 (2007/01/26) 755 } 756 for( ; i<count; i++ ) { 757 rtn[i] = "" ; 758 } 759 760 return rtn; 761 } 762 763 /** 764 * 区åˆ?‚Šæ–?—ã§é€£çµã•れ㟠String ã‚’ã?é…å?ã«åˆ?§£ã—ã¦ã€ãã®å€¤ã‚’è¿”ã—ã¾ã™ã? 765 * ã“れã¯?ŒãŸã¨ãˆã?ã€AAA,BBB,CCC ãªã©ã®ãƒªã‚½ãƒ¼ã‚¹ãƒ??ã‚¿ã‚’å—ã‘ã¦ã‹ã‚‰é…å?ã«å…¥ã‚Œç›´ã—ã¦ã€? 766 * メニューãªã‚Šãƒªã‚¹ãƒˆã‚’作æ?ã™ã‚‹ã®ã«ä¾¿åˆ©ã§ã™ã? 767 * csv2Array ã¨ç•°ãªã‚Šã?連続ã—ãŸåŒºåˆ?‚Šæ–?—ã?ã€å?割ã›ãšã«ãƒˆã?クンã®ã¿åˆ?‚Šå‡ºã—ã¾ã™ã? 768 * トã?クンã¯ã€ã‚«ãƒ³ãƒ?,)ã®ã¿ã§åŒºåˆ?‚Šã€ãã®å¾?trim() ã«ã‚ˆã‚Š 769 * å‰å¾Œã?スペã?スを削除ã—ã¾ã™ã? 770 * 771 * @param csvData å…??ãƒ??ã‚¿ 772 * 773 * @return æ–?—å?é…å? 774 */ 775 public static String[] csv2ArrayOnly( final String csvData ) { 776 if( csvData == null || csvData.length() == 0 ) { return new String[0] ; } 777 778 StringTokenizer token = new StringTokenizer( csvData,"," ); 779 780 ArrayList<String> list = new ArrayList<String>(); 781 while( token.hasMoreTokens() ) { 782 String temp = (token.nextToken()).trim(); 783 if( temp.length() > 0 ) { list.add( temp ); } 784 } 785 786 return list.toArray( new String[list.size()] ); 787 } 788 789 /** 790 * カンãƒ?,)ã€ãƒã‚¤ãƒ•ン(-)ã§é€£çµã•れ㟠String ã‚’ã?é…å?ã«åˆ?§£ã—ã¦ã€ãã®å€¤ã‚’è¿”ã™å‡¦ç??スペシャル版ã§ã™ã? 791 * 0,1,3,5-8,10-* ãªã©ã®æ•°å—æ–‡å—å?ã‹ã‚‰ã€å¿?¦ãªæ•°å—をピックアãƒ??ã—ãŸæ–?—é?列を返ã—ã¾ã™ã? 792 * 引数㮠maxNo ã¯ã€?*" ãŒæŒ‡å®šã•れãŸå ´åˆã?ã€æœ€å¤§ã®æ•°å€¤ã§ã™ã? 793 * よã£ã¦ã€?*" ã¯ã€å˜ç‹¬(?‘æ–‡å?ã§ã¯ã€?-maxNo を表ã—ã?N-* ã§ã¯ã€N-maxNo ã‚’æ„味ã—ã¾ã™ã? 794 * カンマ区åˆ?‚Šã§æŒ?®šã•れる値ã¯ã€åŸºæœ¬çš?«æ•°å—ã§ã€?‡è¤?1,1,2,2)ã€??転(3,2,1)ã§æŒ?®šã§ãã¾ã™ã? 795 * 5-3 ã¨æŒ?®šã—ãŸå?åˆã?ã€?,4,3 ã«åˆ?§£ã•れã¾ã™ã?é€??ã«ç™»éŒ²ã•れã¾ã™ã? 796 * ã¾ãŸã?ä¸?–‡å—ã ã‘ã?å ´åˆã?ã€ã‚¢ãƒ«ãƒ•ァベッãƒ?a-z,A-Zãªã©)も指定ã™ã‚‹äº‹ãŒå¯èƒ½ã§ã™ã? 797 * アルファベットã?å ´åˆã?ã€?*" ã¯æŒ?®šã§ãã¾ã›ã‚“ã€? 798 * é‡è¤?‰Šé™¤ã€æ?é ?¸¦ã¹æ›¿ãˆç‰ãŒã€å¿?¦ãªå ´åˆã?ã€å–得後ã?é…å?ã‚’æ“作ã—ã¦ãã ã•ã„ã€? 799 * 800 * @og.rev 5.5.7.2 (2012/10/09) æ–°è¦è¿½åŠ? 801 * 802 * @param csvData 0,1,3,5-8,10-* ãªã©ã®CSV-ãƒã‚¤ãƒ•ンæ–?—å? 803 * @param maxNo "*" ãŒæŒ‡å®šã•れãŸå ´åˆã?ã€æœ€å¤§æ•° 804 * @return æ–?—å?é…å?(引数ãŒnullã€ã‚¼ãƒæ–?—å?ã®å ´åˆã?ã€ã‚µã‚¤ã‚º0ã®é…å?ã‚’è¿”ã™) 805 */ 806 public static String[] csv2ArrayExt( final String csvData , final int maxNo ) { 807 if( csvData == null || csvData.length() == 0 ) { return new String[0] ; } 808 809 String strData = csvData.replace( "-*" , "-" + maxNo ); // ã¾ãšã?N-* å½¢å¼ã‚’ã€N-maxNo ã«å¤‰æ›ã—ã¾ã™ã? 810 strData = strData.replace( "*" , "0-" + maxNo ); // ãã?後ã?"*" å˜ç‹¬(?‘æ–‡å?ã‚’ã?0-maxNo ã«å¤‰æ›ã—ã¾ã™ã? 811 812 ArrayList<String> noList = new ArrayList<String>(); 813 814 String[] nos = strData.split( "," ); // カンマã§åˆ?§£ã€? , N-M , N-* ã®ã©ã‚Œã‹ 815 int lastNo = 0; // ç¾åœ¨ã®ç•ªå· 816 for( int i=0; i<nos.length; i++ ) { 817 String sno = nos[i] ; 818 int hai = sno.indexOf( '-' ); 819 // ãƒã‚¤ãƒ•ンãŒå«ã¾ã‚Œã¦ã?‚‹ã¨ãã?å‰å¾Œã«åˆ?§£ã—ã¦ã€?–“を埋ã‚ã‚‹ 820 if( hai > 0 ) { 821 String st1 = sno.substring( 0,hai ); // å…ˆé?ã‹ã‚‰ãƒã‚¤ãƒ•ンã¾ã§ 822 String st2 = sno.substring( hai+1 ); // ãƒã‚¤ãƒ•ンã‹ã‚‰æœ?¾Œã¾ã§ 823 if( st1.length() == 1 && st2.length() == 1 ) { // ã¨ã‚‚ã«?‘æ–‡å—ã?å ´åˆã?ã€char化ã—ã¦å‡¦ç??(英数å—å?ç? 824 char ch1 = st1.charAt(0); 825 char ch2 = st2.charAt(0); 826 if( ch1 < ch2 ) { while( ch1 <= ch2 ) { noList.add( String.valueOf(ch1++) ); } } 827 else { while( ch1 >= ch2 ) { noList.add( String.valueOf(ch1--) ); } } 828 } 829 else { 830 int ch1 = Integer.parseInt( st1 ); 831 int ch2 = Integer.parseInt( st2 ); 832 if( ch1 < ch2 ) { while( ch1 <= ch2 ) { noList.add( String.valueOf(ch1++) ); } } 833 else { while( ch1 >= ch2 ) { noList.add( String.valueOf(ch1--) ); } } 834 } 835 } 836 else { 837 noList.add( String.valueOf(sno) ); 838 } 839 } 840 return noList.toArray( new String[noList.size()] ) ; 841 } 842 843 /** 844 * Object å¼•æ•°ã®æ–?—å?表ç¾ã‚’è¿”ã—ã¾ã™ã? 845 * ã“れã¯?ŒString.valueOf ã¨ã»ã¼åŒã˜å‹•作をã—ã¾ã™ãŒã€å¼•æ•°ã?null ã®å ´åˆã«ã€? 846 * "null" ã¨ã?†æ–?—å?ã‚’è¿”ã™ã®ã§ã¯ãªãã?ãªã«ã‚‚ãªã?–‡å—å? "" ã‚’è¿”ã—ã¾ã™ã? 847 * 848 * @param obj æ–?—å?表ç¾ã™ã¹ãå?ã®ã‚ªãƒ–ジェクãƒ? 849 * 850 * @return 引数ã?null ã®å ´åˆã?ã€?" ã«ç‰ã—ã?–‡å—å?。ãã?§ãªã??åˆã?ã€obj.toString() ã®å€¤ 851 */ 852 public static String valueOf( final Object obj ) { 853 if( obj == null ) { return ""; } 854 else { return obj.toString(); } 855 } 856 857 /** 858 * HTML上ã?エスケープ文å—を変æ›ã—ã¾ã™ã? 859 * 860 * HTMLã§è¡¨ç¤ºã™ã‚‹å ´åˆã«ãã¡ã‚“ã¨ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—æ–‡å—ã«å¤‰æ›ã—ã¦ãŠã‹ãªã?¨ 861 * Script を実行ã•れãŸã‚Šã?ä¸è¦ãªHTMLコマンドを潜り込ã¾ã•れãŸã‚Šã™ã‚‹ãŸã‚ã€? 862 * ã‚»ã‚ュリãƒ?‚£ãƒ¼ãƒ›ã?ルã«ãªã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ã?ã§ã€æ³¨æ„ã—ã¦ãã ã•ã„ã€? 863 * 864 * @param input HTMLエスケープå‰ã®æ–?—å? 865 * 866 * @return エスケープ文å—ã«å¤‰æ›å¾Œã?æ–?—å? 867 */ 868 public static String htmlFilter( final String input ) { 869 if( input == null || input.length() == 0 ) { return ""; } 870 StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE ); 871 char ch; 872 for(int i=0; i<input.length(); i++) { 873 ch = input.charAt(i); 874 switch( ch ) { 875 case '<' : rtn.append("<"); break; 876 case '>' : rtn.append(">"); break; 877 case '"' : rtn.append("""); break; 878 case '\'' : rtn.append("'"); break; 879 case '&' : rtn.append("&"); break; 880 default : rtn.append(ch); 881 } 882 } 883 return( rtn.toString() ); 884 } 885 886 /** 887 * JavaScript ç‰ã?引数ã§ã®ã‚¯ã‚ªãƒ¼ãƒˆæ–‡å—ã‚’ASCII変æ›ã—ã¾ã™ã? 888 * 889 * JavaScript ã®å¼•æ•°ã®å€¤ã«ã€ãƒ€ãƒ–ルクオーãƒ?")ã€ã‚·ãƒ³ã‚°ãƒ«ã‚¯ã‚ªãƒ¼ãƒ?')ã? 890 * å«ã¾ã‚Œã‚‹ã¨ã€æ–‡å—å?を表ã™ç‚ºã«å‰å¾Œã«æŒ?®šã—ã¦ã?‚‹ã‚¯ã‚ªãƒ¼ãƒˆã¨æ··ä¹±ã—ã? 891 * ãƒ??タを表ç¾ã§ããªã?‚±ãƒ¼ã‚¹ãŒã‚りã¾ã™ã?ãã?å ´åˆã«ã¯ã€ã‚¯ã‚ªãƒ¼ãƒˆæ–‡å—ã‚’ 892 * ASCIIæ–?—ã«ç½®ãæ›ãˆã‚‹äº‹ã§ã€æŒ‡å®šã?æ–?—を渡ã™ã“ã¨ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã? 893 * ã“ã“ã§ã¯ã€å¼•æ•°æ–?—å?ã«ã€ãƒ€ãƒ–ルクオーãƒ?")ã€ã‚·ãƒ³ã‚°ãƒ«ã‚¯ã‚ªãƒ¼ãƒ?')ãŒã? 894 * å«ã¾ã‚Œã‚‹ã¨ã€ãれãžã‚Œã?ASCII コーãƒ??¥?˜ï¼’ï¼’ã??¥?˜ï¼’ï¼?ã«ç½®ãæ›ãˆã¾ã™ã? 895 * ãªãŠã?null ã¯ã€ã‚¼ãƒæ–?—å?ã«å¤‰æ›ã—ã¦è¿”ã—ã¾ã™ã? 896 * 897 * @param input 入力文å—å? 898 * 899 * @return クオート文å—ã‚’ASCIIæ–?—ã«ç½®ãæ›ãˆãŸæ–?—å? 900 */ 901 public static String quoteFilter( final String input ) { 902 if( input == null || input.length() == 0 ) { return ""; } 903 if( input.indexOf( '\'' ) < 0 && input.indexOf( '"' ) < 0 ) { return input; } 904 905 StringBuilder rtn = new StringBuilder(); 906 char ch; 907 for(int i=0; i<input.length(); i++) { 908 ch = input.charAt(i); 909 switch( ch ) { 910 case '"' : rtn.append( "\\x22" ); break; 911 case '\'' : rtn.append( "\\x27" ); break; 912 default : rtn.append( ch ); 913 } 914 } 915 return( rtn.toString() ); 916 } 917 918 /** 919 * æ•°å—ã‹ã‚‰ï¼‘ï¼–é?æ–?—ã«å¤‰æ›ã™ã‚‹ãƒ??ブルã§ã™ã? 920 * MD5 ã®ãƒãƒƒã‚·ãƒ¥çµæžœ(Byte)ã‚’æ–‡å—å?ã«ã™ã‚‹ã¨ãã«ä½¿ç”¨ã—ã¾ã™ã? 921 * 922 * @og.rev 5.2.2.0 (2010/11/01) security.HybsCryptography ã¸ç§»å‹? 923 */ 924 // private static final char[] hexadecimal = 925 // { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 926 // 'a', 'b', 'c', 'd', 'e', 'f' }; 927 928 /** 929 * MessageDigestã«ã‚ˆã‚Šã€MD5 ã§ãƒãƒƒã‚·ãƒ¥ã—ãŸæ–?—ã«å¤‰æ›ã—ã¾ã™ã? 930 * 931 * MD5ã§ã€?¼‘ï¼–Byteã®ãƒã‚¤ãƒˆã«å¤‰æ›ã•れã¾ã™ãŒã€ã“ã“ã§ã¯ã€?del>マイナス時ã«ã¯, 932 * 符å·ã‚’å転ã•ã›ã¦ã€?/del>?‘ï¼–é?æ•°ã§æ–?—å?ã«å¤‰æ›ã—ã¦ã?¾ã™ã? 933 * <del>よã£ã¦ã€ã“ã®ãƒ¡ã‚½ãƒ?ƒ‰ã§å¤‰æ›ã—ãŸæ–?—ã§ã®ã¿çªãåˆã‚ã›ã¦æ£ã—ã„ã‹ã©ã?‹ã‚? 934 * 判æ–ã—ã¦ãã ã•ã„ã€?/del> 935 * 936 * å¤‰æ›æ–¹æ³•ã?ã€å„ãƒã‚¤ãƒˆã?上ä½?下ä½ã‚’?‘ï¼–é?æ–?—å?ã«å¤‰æ›å¾Œã?連çµã—ã¦ã?¾ã™ã? 937 * ã“れã¯ã€Tomcatç‰ã? digest èªè¨¼(MD5使用æ™?ã¨åŒã˜å¤‰æ›æ–¹å¼ã§ã™ã? 938 * 連çµå¾Œã?æ–?—å?é•·ã¯ã€?¼“ï¼’ãƒã‚¤ãƒ?固å®?ã«ãªã‚Šã¾ã™ã? 939 * 940 * @og.rev 5.2.2.0 (2010/11/01) security.HybsCryptography ã¸ç§»å‹? 941 * 942 * @param input 変æ›å‰ã?æ–?—å? 943 * 944 * @return MD5 ã§ãƒãƒƒã‚·ãƒ¥ã—ãŸæ–?—å?。32ãƒã‚¤ãƒ?固å®? 945 */ 946 // public static String getMD5( final String input ) { 947 // String rtn = null; 948 // if( input != null ) { 949 // try { 950 // MessageDigest md5 = MessageDigest.getInstance( "MD5" ); 951 // md5.update( input.getBytes() ); 952 // byte[] out = md5.digest(); 953 // 954 // char[] chs = new char[32]; 955 // for( int i=0; i<16; i++ ) { 956 // int high = ((out[i] & 0xf0) >> 4); 957 // int low = (out[i] & 0x0f); 958 // chs[i*2] = hexadecimal[high]; 959 // chs[i*2+1] = hexadecimal[low]; 960 // } 961 // rtn = new String(chs); 962 // } 963 // catch( NoSuchAlgorithmException ex ) { 964 // String errMsg = "MessageDigestã§å¤±æ•—ã—ã¾ã—ãŸã€?" + input + "]" + CR 965 // + ex.getMessage() ; 966 // throw new RuntimeException( errMsg,ex ); 967 // } 968 // } 969 // return rtn; 970 // } 971 972 /** 973 * æ‰?®šã?ã‚ャラクタコードをå–り除ã?Ÿæ–?—å?を作æ?ã—ã¾ã™ã? 974 * 975 * 実ç¾ã—ãŸã?©Ÿè?ã¯ã€String#replace( 'x','' ) çš?ªè¡¨ç¾ã§ã™ã? 976 * ã¤ã¾ã‚Šã?æŒ?®šã?ã‚ャラクタをå–り除ããŸã??ã§ã™ãŒã€ä¸Šè¨˜ã‚³ãƒžãƒ³ãƒ‰ã§ã¯ã€? 977 * コンパイル時ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã™ã? 978 * å–り除ããŸã?‚ャラクタコードãŒå˜åœ¨ã—ãªã??åˆã?ã€æŒ‡å®šã?æ–?—å?ã‚? 979 * ãã?ã¾ã¾è¿”ã—ã¾ã™ã? 980 * 981 * @param value 処ç?¯¾è±¡ã®æ–?—å? 982 * @param ch å–り除ããŸã?‚ャラクタ 983 * 984 * @return 処ç?¾Œã?æ–?—å? 985 */ 986 public static String deleteChar( final String value,final char ch ) { 987 if( value == null || value.indexOf( ch ) < 0 ) { return value; } 988 char[] chs = value.toCharArray() ; 989 int j=0; 990 for( int i=0;i<chs.length; i++ ) { 991 if( chs[i] == ch ) { continue; } 992 chs[j] = chs[i]; 993 j++; 994 } 995 return String.valueOf( chs,0,j ); 996 } 997 998 /** 999 * æ–?—å?ã«å«ã¾ã‚Œã‚‹ã€ç‰¹å®šã?æ–?—ã?個数をカウントã—ã¦è¿”ã—ã¾ã™ã? 1000 * 1001 * @og.rev 5.2.0.0 (2010/09/01) 1002 * 1003 * @param value 処ç?¯¾è±¡ã®æ–?—å? 1004 * @param ch カウントã™ã‚‹æ–‡å? 1005 * 1006 * @return カウント数 1007 */ 1008 public static int countChar( final String value,final char ch ) { 1009 if( value == null || value.indexOf( ch ) < 0 ) { return 0; } 1010 char[] chs = value.toCharArray() ; 1011 int cnt=0; 1012 for( int i=0;i<chs.length; i++ ) { 1013 if( chs[i] == ch ) { cnt++; } 1014 } 1015 return cnt; 1016 } 1017 1018 /** 1019 * code39 ã®ãƒã‚§ãƒ?‚¯ãƒ?‚¸ãƒ?ƒˆè¨ˆç®—ã«ä½¿ç”¨ã™ã‚‹ モジュラス?”ï¼?ã®å¤‰æ›è¡¨ã§ã™ã? 1020 * 1021 */ 1022 private static final String MODULUS_43 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%" ; 1023 1024 /** 1025 * CODE39 ã® æ–?—å?を作æ?ã—ã¾ã™ã? 1026 * 1027 * CODE39 ã¯ã€ã?0??, A?žZ,-,・,ã€?$,/,+,%ã€ã?コードãŒä½¿ç”¨ã§ãã‚‹ 1028 * ãƒã?コードã?体系ã§ã™ã?通常 * ã§å§‹ã¾ã‚?* ã§çµ‚äº?—ã¾ã™ã? 1029 * ã¾ãŸã?ãƒã‚§ãƒ?‚¯ãƒ?‚¸ãƒ?ƒˆ ã«ã€ãƒ¢ã‚¸ãƒ¥ãƒ©ã‚¹43 ãŒä½¿ã‚れã¾ã™ã? 1030 * ã“ã“ã§ã¯ã€æŒ‡å®šã?æ–?—å?ã®å‰å¾Œã«ã€? を付与ã—ã€å¿?¦ã§ã‚れ㰠1031 * ãƒã‚§ãƒ?‚¯ãƒ?‚¸ãƒ?ƒˆã‚‚付与ã—ã¾ã™ã? 1032 * æŒ?®šã?入力文å—å?ã«ã¯ã€? を付ã‘ãªã?§ãã ã•ã„ã€? 1033 * 1034 * @param value 処ç?¯¾è±¡ã®æ–?—å? 1035 * @param checkDigit ãƒã‚§ãƒ?‚¯ãƒ?‚¸ãƒ?ƒˆã®ä»˜ä¸?true:付ã‘ã‚?false:付ã‘ãªã? 1036 * 1037 * @return 処ç?¾Œã?æ–?—å? 1038 */ 1039 public static String code39( final String value,final boolean checkDigit ) { 1040 String rtn = ( value == null ) ? "" : value ; 1041 if( ! checkDigit ) { return ( "*" + rtn + "*" ); } 1042 1043 int kei = 0; 1044 int cd; 1045 for( int i=0; i<rtn.length(); i++ ) { 1046 cd = MODULUS_43.indexOf( rtn.charAt(i) ); 1047 if( cd < 0 ) { 1048 String errMsg = "æŒ?®šã?æ–?—ä¸ã«ã€CODE39 è¦å®šå¤–æ–‡å—ãŒä½¿ç”¨ã•れã¦ã?¾ã™ã?[" + rtn.charAt(i) + "]" ; 1049 throw new RuntimeException( errMsg ); 1050 } 1051 kei += cd ; 1052 } 1053 char digit = MODULUS_43.charAt( kei % 43 ); 1054 1055 return ( "*" + rtn + digit + "*" ); 1056 } 1057 1058 /** 1059 * 引数 in ãŒã?null ã¾ãŸã?ã€ã‚¼ãƒæ–?—å?ã®å ´åˆã??¤ãƒ?ƒ•ォルトå? def ã‚’è¿”ã—ã¾ã™ã? 1060 * ã‚‚ã¡ã‚ã‚“ã€in ã‚?def ã‚?null ã®å ´åˆã??¤null ã‚’è¿”ã—ã¾ã™ã? 1061 * 1062 * @param in 基準ã¨ãªã‚‹æ–‡å—å? 1063 * @param def ãƒ?ƒ•ォルト文å—å? 1064 * 1065 * @return ( in != null ) ? in : def ; 1066 */ 1067 public static String nval( final String in,final String def ) { 1068 return ( in == null || in.length() == 0 ) ? def : in ; 1069 } 1070 1071 /** 1072 * 引数 in ãŒã?null ã¾ãŸã?ã€ã‚¼ãƒæ–?—å?ã®å ´åˆã??¤ãƒ?ƒ•ォルトå? def ã‚’è¿”ã—ã¾ã™ã? 1073 * 1074 * @param in 基準ã¨ãªã‚‹æ–‡å—å? 1075 * @param def ãƒ?ƒ•ォルト数å? 1076 * 1077 * @return 引数 in を変æ›ã—ãŸæ•°å—ã?変æ›ã§ããªã??åˆã? ãƒ?ƒ•ォルトå? def 1078 */ 1079 public static int nval( final String in,final int def ) { 1080 return ( in == null || in.length() == 0 ) ? def : Integer.parseInt( in ) ; 1081 } 1082 1083 /** 1084 * 引数 in ãŒã?null ã¾ãŸã?ã€ã‚¼ãƒæ–?—å?ã®å ´åˆã??¤ãƒ?ƒ•ォルトå? def ã‚’è¿”ã—ã¾ã™ã? 1085 * 1086 * @param in 基準ã¨ãªã‚‹æ–‡å—å? 1087 * @param def ãƒ?ƒ•ォルト数å? 1088 * 1089 * @return 引数 in を変æ›ã—ãŸæ•°å—ã?変æ›ã§ããªã??åˆã? ãƒ?ƒ•ォルトå? def 1090 */ 1091 public static long nval( final String in,final long def ) { 1092 return ( in == null || in.length() == 0 ) ? def : Long.parseLong( in ) ; 1093 } 1094 1095 /** 1096 * 引数 in ãŒã?null ã¾ãŸã?ã€ã‚¼ãƒæ–?—å?ã®å ´åˆã??¤ãƒ?ƒ•ォルトå? def ã‚’è¿”ã—ã¾ã™ã? 1097 * 通常ã¯ã€?true" ã¾ãŸã?ã€?"TRUE" æ–?—å?ã‚’ã?è«–ç†å€¤ã® true ã«å¤‰æ›ã—ã¾ã™ã? 1098 * ãŸã ã—ã?æ–?—å?é•·ã?1æ–?—ã?å ´åˆã?ã¿ã€?0" 以外を true ã«å¤‰æ›ã—ã¾ã™ã? 1099 * 1100 * @param in 基準ã¨ãªã‚‹æ–‡å—å? 1101 * @param def ãƒ?ƒ•ォルト論ç†å€¤ 1102 * 1103 * @return 引数 in を変æ›ã—ãŸè«–ç†å€¤ã€‚変æ›ã§ããªã??åˆã? ãƒ?ƒ•ォルトå? def 1104 */ 1105 public static boolean nval( final String in,final boolean def ) { 1106 boolean rtn = def; 1107 if( in != null && in.length() != 0 ) { 1108 rtn = "true".equalsIgnoreCase( in ) ; 1109 if( in.length() == 1 ) { rtn = ! "0".equals( in ); } 1110 } 1111 return rtn ; 1112 } 1113 1114 /** 1115 * 引数 in ãŒã?nullã€?_"ã€ã‚¼ãƒæ–?—å?ã®å ´åˆã??¤ãƒ?ƒ•ォルトå? def ã‚’è¿”ã—ã¾ã™ã? 1116 * <del>ãŸã ã—ã?NULL代替æ–??_)ã¯ã‚¼ãƒæ–?—å?ã«ç½®ãæ›ãˆã¾ã™ã?</del> 1117 * 1118 * ã•らã«ã€ãƒ¡ãƒ¢ãƒªé ˜åŸŸã‚’ç¯?´?™ã‚‹ç‚ºã€intern() ã®çµæžœã‚’è¿”ã—ã¾ã™ã? 1119 * 1120 * @og.rev 5.2.2.0 (2010/11/01) "_" ã®å–り扱ã?¤‰æ›´ 1121 * 1122 * @param in 基準ã¨ãªã‚‹æ–‡å—å? 1123 * @param def ãƒ?ƒ•ォルト文å—å? 1124 * 1125 * @return nullã€?_"ã€ã‚¼ãƒæ–?—å?ã®å ´åˆã?ã€ãƒ‡ãƒ•ォルト文å—å?ã‚’ã?ãã†ã§ãªã‘れã°ã€å?力文å—ã‚’è¿”ã™ã€? 1126 */ 1127 public static String nval2( final String in,final String def ) { 1128 // return ( in == null || in.length() == 0 ) ? def : ( "_".equals( in ) ? "" : in.intern() ) ; 1129 return ( in == null || in.length() == 0 || "_".equals( in ) ) ? def : in.intern() ; 1130 } 1131 1132 /** 1133 * 引数 in ãŒã?null ã¾ãŸã?ã€ã‚¼ãƒæ–?—å?ã®å ´åˆã??¤ãƒ?ƒ•ォルトå? def ã‚’è¿”ã—ã¾ã™ã? 1134 * ãŸã ã—ã?NULL代替æ–??_)㯠ãƒ?ƒ•ォルトå? def2 ã«ç½®ãæ›ãˆã¾ã™ã? 1135 * 1136 * ã•らã«ã€ãƒ¡ãƒ¢ãƒªé ˜åŸŸã‚’ç¯?´?™ã‚‹ç‚ºã€intern() ã®çµæžœã‚’è¿”ã—ã¾ã™ã? 1137 * 1138 * @og.rev 5.2.2.0 (2010/11/01) "_" ã®å–り扱ã?¤‰æ›´ 1139 * 1140 * @param in 基準ã¨ãªã‚‹æ–‡å—å? 1141 * @param def ãƒ?ƒ•ォルト文å—å? 1142 * @param def2 NULL代替æ–??_)ã®å ´åˆã?ãƒ?ƒ•ォルト文å—å? 1143 * 1144 * @return NULLæ–?—å?関係ã?å ´åˆã?ã€ã‚¼ãƒæ–?—å?ã‚’ã?ãã†ã§ãªã‘れã°ã€å?力文å—ã‚’è¿”ã™ã€? 1145 */ 1146 public static String nval2( final String in,final String def,final String def2 ) { 1147 // return ( in == null || in.length() == 0 ) ? def : ( "_".equals( in ) ? "" : in.intern() ) ; 1148 return ( in == null || in.length() == 0 ) ? def : ( "_".equals( in ) ? def2 : in.intern() ) ; 1149 } 1150 1151 /** 1152 * 引数 in ãŒã?null ã¾ãŸã?ã€ã‚¼ãƒæ–?—å?ã€ã¾ãŸã?ã™ã¹ã¦ç©ºç™½æ–?—ã?å ´åˆã??¤true ã‚’è¿”ã—ã¾ã™ã? 1153 * ãれ以外ã? false ã‚’è¿”ã—ã¾ã™ã? 1154 * 1155 * 注æ„ã?ã€ã‚ªãƒ¼ãƒ«ã‚¹ãƒšã?スã‚?‚¿ãƒ–æ–‡å—ã?改行文å—ã‚‚ true ã«ãªã‚Šã¾ã™ã? 1156 * 1157 * @param in 基準ã¨ãªã‚‹æ–‡å—å? 1158 * 1159 * @return NULLæ–?—å?関係ã?å ´åˆã?ã€true ã‚’ã?ãã†ã§ãªã‘れã°ã€false ã‚’è¿”ã™ã€? 1160 */ 1161 public static boolean isNull( final String in ) { 1162 if( in == null || in.length() == 0 ) { return true; } 1163 1164 // String.trim().length()==0 ã®é«˜é?ç‰? 1165 for( int i=0; i<in.length(); i++ ) { 1166 if( !Character.isWhitespace( in.charAt(i) ) ) { 1167 return false; 1168 } 1169 } 1170 return true; 1171 } 1172 1173 /** 1174 * Throwable ã® printStackTrace() çµæžœã‚’æ–‡å—å?ã«å¤‰æ›ã—ã¦è¿”ã—ã¾ã™ã? 1175 * 1176 * @param th printStackTraceã™ã¹ãå?ã®Throwableオブジェクãƒ? 1177 * 1178 * @return Throwableã®è©³ç´°ãƒ¡ãƒ?‚»ãƒ¼ã‚¸( th.printStackTrace() ) 1179 */ 1180 public static String stringStackTrace( final Throwable th ) { 1181 if( th == null ) { return null; } 1182 1183 StringWriter sw = new StringWriter(); 1184 th.printStackTrace( new PrintWriter( sw ) ); 1185 1186 return String.valueOf( sw ); 1187 } 1188 1189 /** 1190 * Throwable ã® printStackTrace() çµæžœã®å†??opengion ã«é–¢ã™ã‚‹ç®?‰€ã?‘ã‚’æ–‡å—å?ã«å¤‰æ›ã—ã¦è¿”ã—ã¾ã™ã? 1191 * 1192 * printStackTrace() ã™ã‚‹ã¨ã€è?大ãªãƒ¡ãƒ?‚»ãƒ¼ã‚¸ãŒè¡¨ç¤ºã•れるãŸã‚ã?ãã?ä¸ã®ã€?org.opengion" ã‚? 1193 * å«ã‚?®?‰€ã?‘ã‚’ã?抜粋ã—ã¾ã™ã? 1194 * 1195 * @og.rev 5.7.2.0 (2014/01/10) æ–°è¦ä½œæ? 1196 * 1197 * @param th å…??Throwableオブジェクãƒ? 1198 * 1199 * @return Throwableã®è©³ç´°ãƒ¡ãƒ?‚»ãƒ¼ã‚¸( StackTraceElement ã®æŠœç²?) 1200 */ 1201 public static String ogStackTrace( final Throwable th ) { 1202 if( th == null ) { return null; } 1203 1204 StringBuilder rtn = new StringBuilder( BUFFER_MIDDLE ); 1205 1206 StackTraceElement[] eles = th.getStackTrace(); 1207 if( eles.length > 0 ) { 1208 rtn.append( " " ).append( eles[0].toString() ).append( CR ); 1209 } 1210 1211 for( int i=1; i<eles.length; i++ ) { 1212 String cls = eles[i].getClassName(); 1213 if( cls.indexOf( "org.opengion" ) >= 0 ) { 1214 rtn.append( " at " ).append( eles[i].toString() ).append( CR ); 1215 } 1216 } 1217 1218 return rtn.toString(); 1219 } 1220 1221 /** 1222 * 大ããªæµ®å‹•å°æ•°ç‚¹æ•°ã«ã¤ã?¦ã€ã‚«ãƒ³ãƒžç·¨é›?‚’行ã„ã¾ã™ã? 1223 * 1224 * ã“ã?メソãƒ?ƒ‰ã§ã¯ã€?.23 E12 ãªã©ã®æ•°å—ã?扱ã?¾ã›ã‚“。é?常㮠1225 * æ•°å—ã¨ãƒ”ãƒªã‚ªãƒ‰ã§æ§‹æ?ã•ã‚ŒãŸæ–‡å—å?ã®ã¿ã€å¤‰æ›å¯¾è±¡ã«ãªã‚Šã¾ã™ã? 1226 * (ãŸã ã—ã?䏿£ãªæ–?—å?を与ãˆã¦ã‚‚エラーãƒã‚§ãƒ?‚¯ã¯ã—ã¦ã?¾ã›ã‚“ã€? 1227 * minFraction ã«ã¯ã€å°‘数点部ã«ä¸Žãˆã‚‹å›ºå®šå?を指定ã—ã¾ã™ã?入力文å—å?ã? 1228 * ãã?æ¡æ•°ã‚ˆã‚Šå°‘ãªã??åˆã?ã€?¼åŸ‹ã‚ã—ã¾ã™ã?<del>多ã„å ´åˆã?ã€ã‚«ãƒ?ƒˆã—ã¾ã™ã?</del> 1229 * 多ã„å ´åˆã§ã‚‚ã‚«ãƒ?ƒˆã—ã¾ã›ã‚“ã€? 1230 * minFraction ã?0 ã®å ´åˆã?ã€å°‘数点ã¯ä»˜ãã¾ã›ã‚“ã€? 1231 * ".12" ãªã©ã®å°‘数点ã¯ã€å¿?šå…ˆé?ã« 0 ãŒä»˜ãã¾ã™ã? 1232 * 入力文å—å?ã?null ã‹ã?ã‚¼ãƒæ–?—å?時ã?ã€ãã®ã¾ã¾å…¥åŠ›ãƒ‡ãƒ¼ã‚¿ã‚’è¿”ã—ã¾ã™ã? 1233 * 1234 * <pre> 1235 * DecimalFormat format = new DecimalFormat( "#,##0.00########" ); 1236 * double dd = Double.parseDouble( val ); 1237 * return format.format( dd ); 1238 * </pre> 1239 * ã«å¯¾ã—ã¦ã€minFractionåˆ??少数以下ã?ゼãƒã®æŒ?®šã¨ã€inã« ',' ã? 1240 * å«ã¾ã‚ŒãŸå‡¦ç?‚’追åŠ?—ãŸæ„Ÿã˜ã«ãªã‚Šã¾ã™ã? 1241 * 1242 * @og.rev 4.0.0.0 (2007/10/26) 空白ã®ãƒˆãƒªãƒ??ç?‚’追åŠ? 1243 * 1244 * @param in 変æ›å…??æ–?—å? 1245 * @param minFraction å¤‰æ›æ™‚ã?少数点以下ã?å›ºå®šæ¡æ•° 1246 * 1247 * @return カンマ編é›?¾Œã?æ•°å—åž‹æ–?—å? 1248 */ 1249 public static String numberFormat( final String in, final int minFraction ) { 1250 if( in == null || in.length() == 0 ) { return in ; } 1251 1252 // 4.0.0.0 (2007/10/26) 1253 String tmp = in.trim(); 1254 1255 if( tmp.length() == 0 ) { return tmp ; } 1256 1257 char[] chs = tmp.toCharArray(); 1258 int pos = 0; 1259 1260 // 整数部ã®è¨å®? 1261 boolean firstZero = true; 1262 StringBuilder buf1 = new StringBuilder(); 1263 while( pos < chs.length ) { 1264 char ch = chs[pos++]; 1265 if( ch == '.' ) { break; } 1266 else if( ch != '-' && ch != ',' && ( ch != '0' || !firstZero )) { 1267 buf1.append( ch ); 1268 firstZero = false; 1269 } 1270 } 1271 if( buf1.length() == 0 ) { 1272 buf1.append( '0' ); 1273 } 1274 1275 for( int i=buf1.length()-3; i>0; i-=3 ) { 1276 buf1.insert( i,',' ); 1277 } 1278 if( chs[0] == '-' ) { buf1.insert( 0,'-' ); } 1279 1280 // 少数部ã®è¨å®? 1281 // 3.6.0.3 (2004/10/05) æ¡æ•°ãŒå¤šã„å ´åˆã§ã‚‚ã‚«ãƒ?ƒˆã—ãªã? 1282 StringBuilder buf2 = new StringBuilder(); 1283 while( pos < chs.length ) { 1284 buf2.append( chs[pos++] ); 1285 } 1286 1287 while( buf2.length() < minFraction ) { 1288 buf2.append( '0' ); 1289 } 1290 1291 if( buf2.length() > 0 ) { 1292 buf1.append( '.' ).append( buf2 ); 1293 } 1294 1295 return buf1.toString(); 1296 } 1297 1298 /** 1299 * è˜åˆ¥id ã«å¿œã˜ã?オブジェクトを作æ?ã—ã¾ã™ã? 1300 * 作æ?ã™ã‚‹ã«ã¯ã€ãƒ‡ãƒ•ォルトコンストラクターãŒå¿?¦ã§ã™ã? 1301 * 1302 * @param cls 作æ?ã™ã‚‹ã‚¯ãƒ©ã‚¹ã®ãƒ•ルãƒã?ãƒ? 1303 * 1304 * @return オブジェクãƒ? 1305 * @throws RuntimeException 何らã‹ã?エラーãŒç™ºç”Ÿã—ãŸå?å? 1306 */ 1307 public static Object newInstance( final String cls ) { 1308 return newInstance( cls,Thread.currentThread().getContextClassLoader() ); 1309 } 1310 1311 /** 1312 * æŒ?®šã•れãŸã‚¯ãƒ©ã‚¹ãƒãƒ¼ãƒ?‚’使ã£ã¦ã€è˜åˆ¥id ã«å¿œã˜ã?オブジェクトを作æ?ã—ã¾ã™ã? 1313 * 作æ?ã™ã‚‹ã«ã¯ã€ãƒ‡ãƒ•ォルトコンストラクターãŒå¿?¦ã§ã™ã? 1314 * initialize パラメータ㯠true 相å½?ãれã¾ã§ã«åˆæœŸåŒ–ã•れã¦ã?ªã??åˆã ã‘å?期化)ã§ã™ã? 1315 * 1316 * @param cls 作æ?ã™ã‚‹ã‚¯ãƒ©ã‚¹ã®ãƒ•ルãƒã?ãƒ? 1317 * @param loader 作æ?ã™ã‚‹ã‚¯ãƒ©ã‚¹ã®ã‚¯ãƒ©ã‚¹ãƒãƒ¼ãƒ? 1318 * 1319 * @return オブジェクãƒ? 1320 * @throws RuntimeException 何らã‹ã?エラーãŒç™ºç”Ÿã—ãŸå?å? 1321 */ 1322 public static Object newInstance( final String cls,final ClassLoader loader ) { 1323 try { 1324 return Class.forName( cls,true,loader ).newInstance(); 1325 } 1326 catch( ClassNotFoundException ex1 ) { 1327 String errMsg = "クラスãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。class=[" + cls + "]" + CR 1328 + ex1.getMessage() ; 1329 throw new RuntimeException( errMsg,ex1 ); 1330 } 1331 catch( LinkageError ex2 ) { 1332 String errMsg = "リンケージãŒå¤±æ•—ã—ã¾ã—ãŸã€‚class=[" + cls + "]" + CR 1333 + ex2.getMessage(); 1334 throw new RuntimeException( errMsg,ex2 ); 1335 } 1336 catch( InstantiationException ex3 ) { 1337 String errMsg = "インスタンスã®ç”Ÿæ?ãŒå¤±æ•—ã—ã¾ã—ãŸã€‚class=[" + cls + "]" + CR 1338 + ex3.getMessage() ; 1339 throw new RuntimeException( errMsg,ex3 ); 1340 } 1341 catch( IllegalAccessException ex4 ) { 1342 String errMsg = "クラスã¾ãŸã?åˆæœŸåŒ–åã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“。class=[" + cls + "]" + CR 1343 + ex4.getMessage(); 1344 throw new RuntimeException( errMsg,ex4 ); 1345 } 1346 catch( RuntimeException ex5 ) { // 3.6.0.0 (2004/09/17) 1347 String errMsg = "予期ã›ã¬ã‚¨ãƒ©ãƒ¼ class=[" + cls + "]" + CR 1348 + ex5.getMessage() ; 1349 throw new RuntimeException( errMsg,ex5 ); 1350 } 1351 } 1352 1353 /** 1354 * æŒ?®šã?URLæ–?—å?åŒå£«ã‚’é?çµã•ã›ã¾ã™ã? 1355 * ãã?ã¨ãã?後方URLãŒã?絶対パスã®å ´åˆã?ã€??çµã›ã?後方URLã‚’è¿”ã—ã¾ã™ã? 1356 * 1357 * 絶対パスã‹ã©ã?‹ã¯ã€??常ã®ãƒ•ァイル属æ?ã¨åŒæ§˜ã«ã€å?é ãŒã?'/' (UNIX)ã¾ãŸã?ã€? 1358 * ?’æ–‡å—ç›®ãŒã?":" (Windows)ã®å ´åˆã?ã¾ãŸã?ã€å?é ã?"\" (ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ‘ス)ã§ 1359 * å§‹ã¾ã‚‹å?åˆã§åˆ¤æ–ã—ã¾ã™ã? 1360 * é€£çµæ™‚ã«ã€å‰æ–¹URLã®æœ«å°¾ã« "/" ã‚’ä»˜åŠ ã—ã¾ã™ã? 1361 * 1362 * @og.rev 5.0.0.1 (2009/08/15) ä¸è¦ãªã‚ªãƒ–ジェクトã?生æ?を抑制ã™ã‚‹ã€? 1363 * @og.rev 5.6.5.2 (2013/06/21) 第?“引数をå¯å¤‰é•·å¼•æ•°ã«å¤‰æ›´ã®ãŸã‚ã€å»?¢ 1364 * 1365 * @param url1 å…ˆé?URLæ–?—å? 1366 * @param url2 後方URLæ–?—å?(絶対パスã®å ´åˆã?ã€è¿”り値) 1367 * 1368 * @return URLæ–?—å?åŒå£«ã‚’é?çµçµæžœ url1 + url2(url2ãŒçµ¶å¯¾ãƒ‘スã®å ´åˆã?ã€url2ã®ã¿) 1369 */ 1370 // public static String urlAppend( final String url1,final String url2 ) { 1371 // if( url2 == null || url2.length() == 0 ) { return url1 ; } 1372 // else if( ( url1 == null || url1.length() == 0 ) || 1373 // ( url2.charAt(0) == '/' ) || // 実ディレクトリã?UNIX 1374 // ( url2.length() > 1 && url2.charAt(1) == ':' ) || // 実ディレクトリã?Windows 1375 // ( url2.charAt(0) == '\\' ) ) { // 実ディレクトリã?ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ‘ス 1376 // return url2 ; 1377 // } 1378 // 1379 // StringBuilder rtnUrl = new StringBuilder( url1.length() + url2.length() + 1 ); 1380 // 1381 //// if( url2 == null || url2.length() == 0 ) { rtnUrl.append( url1 ); } 1382 //// else if( url1 == null || url1.length() == 0 ) { rtnUrl.append( url2 ); } 1383 //// else if( ( url2.charAt(0) == '/' ) || // 実ディレクトリã?UNIX 1384 //// ( url2.length() > 1 && url2.charAt(1) == ':' ) || // 実ディレクトリã?Windows 1385 //// ( url2.charAt(0) == '\\' ) ) { // 実ディレクトリã?ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ‘ス 1386 //// rtnUrl.append( url2 ); 1387 //// } 1388 //// else { 1389 // char ch = url1.charAt( url1.length()-1 ) ; 1390 // if( ch == '/' || ch == '\\' ) { 1391 // rtnUrl.append( url1 ).append( url2 ) ; 1392 // } 1393 // else { 1394 // rtnUrl.append( url1 ).append( "/" ).append( url2 ) ; 1395 // } 1396 //// } 1397 // 1398 // return rtnUrl.toString() ; 1399 // } 1400 1401 /** 1402 * æŒ?®šã?URLæ–?—å?åŒå£«ã‚’é?çµã•ã›ã¾ã™ã? 1403 * ãã?ã¨ãã?後方URLãŒã?絶対パスã®å ´åˆã?ã€??çµã›ã?後方URLã‚’è¿”ã—ã¾ã™ã? 1404 * 第?’引数以é™ã?ã€çµ¶å¯¾ãƒ‘ス判定をã›ãšç›´å‰ã?URLã®æœ«å°¾åˆ¤å®šã?ã¿ã§é€£çµã—ã¾ã™ã? 1405 * 1406 * 絶対パスã‹ã©ã?‹ã¯ã€??常ã®ãƒ•ァイル属æ?ã¨åŒæ§˜ã«ã€å?é ãŒã?'/' (UNIX)ã¾ãŸã?ã€? 1407 * ?’æ–‡å—ç›®ãŒã?":" (Windows)ã®å ´åˆã?ã¾ãŸã?ã€å?é ã?"\" (ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ‘ス)ã§ 1408 * å§‹ã¾ã‚‹å?åˆã§åˆ¤æ–ã—ã¾ã™ã? 1409 * é€£çµæ™‚ã«ã€å‰æ–¹URLã®æœ«å°¾ã« "/" ã‚’ä»˜åŠ ã—ã¾ã™ã? 1410 * 1411 * 処ç??äº’æ›æ€§ç¢ºä¿ã?ãŸã‚ã€ç¬¬?“引数ã®å¯å¤‰é•·å¼•数を追åŠ?—ã¦ã?¾ã™ã? 1412 * 1413 * @og.rev 5.0.0.1 (2009/08/15) ä¸è¦ãªã‚ªãƒ–ジェクトã?生æ?を抑制ã™ã‚‹ã€? 1414 * @og.rev 5.6.5.2 (2013/06/21) 第?“引数をå¯å¤‰é•·å¼•æ•°ã«å¤‰æ›´ 1415 * 1416 * @param url1 å…ˆé?URLæ–?—å? 1417 * @param url2 後方URLæ–?—å?(絶対パスã®å ´åˆã?ã€è¿”り値) 1418 * @param urls 後方URLæ–?—å? 1419 * 1420 * @return URLæ–?—å?åŒå£«ã®é€£çµçµæžœ url1 + url2(url2ãŒçµ¶å¯¾ãƒ‘スã®å ´åˆã?ã€url2ã‹ã‚‰é€£çµé–‹å§? 1421 */ 1422 public static String urlAppend( final String url1,final String url2,final String... urls ) { 1423 StringBuilder rtnUrl = new StringBuilder( 200 ); 1424 1425 if( url2 == null || url2.length() == 0 ) { rtnUrl.append( url1 ) ; } 1426 else if( ( url1 == null || url1.length() == 0 ) || 1427 ( url2.charAt(0) == '/' ) || // 実ディレクトリã?UNIX 1428 ( url2.length() > 1 && url2.charAt(1) == ':' ) || // 実ディレクトリã?Windows 1429 ( url2.charAt(0) == '\\' ) ) { // 実ディレクトリã?ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ‘ス 1430 rtnUrl.append( url2 ) ; 1431 } 1432 else { 1433 char ch = url1.charAt( url1.length()-1 ) ; 1434 if( ch == '/' || ch == '\\' ) { 1435 rtnUrl.append( url1 ).append( url2 ) ; 1436 } 1437 else { 1438 rtnUrl.append( url1 ).append( "/" ).append( url2 ) ; 1439 } 1440 } 1441 1442 // ã“ã“ã‹ã‚‰ãŒã?追åŠ?? 1443 for( String url : urls ) { 1444 if( url != null && url.length() > 0 ) { 1445 char ch = rtnUrl.charAt( rtnUrl.length()-1 ) ; 1446 if( ch == '/' || ch == '\\' ) { 1447 rtnUrl.append( url ) ; 1448 } 1449 else { 1450 rtnUrl.append( "/" ).append( url ) ; 1451 } 1452 } 1453 } 1454 1455 return rtnUrl.toString() ; 1456 } 1457 1458 /** 1459 * getUnicodeEscape ã§ä½¿ç”¨ã™ã‚‹æ¡åˆã‚ã›ç”¨æ–?—å?é…å?ã§ã™ã? 1460 * Unicodeã® HexString 変æ›å¾Œã?æ¡ã«å¿œã˜ã¦ã€åŸ‹ã‚åˆã‚ã›ã—ã¾ã™ã? 1461 * 1462 */ 1463 private static final String[] UTF_STR = { "�", "�", "�", "�", "&#x" }; 1464 1465 /** 1466 * Unicodeæ–?—å?ã®å€¤ã‚?HTML ã®ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—記å·(&#xZZZZ;)ã«å¤‰æ›ã—ã¾ã™ã? 1467 * 1468 * SJIS(JA16SJIS) ã§ä½œæ?ã•れãŸãƒ‡ãƒ¼ã‚¿ãƒ™ã?スã«ã€?NVARCHAR2)を使用ã—ã¦ä¸å›½èªžç‰ã‚’登録ã™ã‚‹ã®ã¯ 1469 * éžå¸¸ã«è¤?›‘ã§ã‹ã¤ã€ãƒªã‚¹ã‚¯ãŒå¤§ãã„処ç?«ãªã‚Šã¾ã™ã? 1470 * ORACLE殿ã§ã‚‚ã?自信をæŒã£ã¦ã¯å‹§ã‚られãªã?©Ÿè?ã¨ã®ã‚³ãƒ¡ãƒ³ãƒˆã‚’é ‚ã„ã¦ã?¾ã™ã? 1471 * ãã“ã§ã€HTMLã§ã®ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—æ–‡å—を使用ã—ã¦ã€Unicodeã‚’æ–‡å—å?化ã—ã¦ç™»éŒ²ã™ã‚‹ç‚ºã® 1472 * DBType ã¨ã—ã¦ã€æ–°è¦ã«ä½œæ?ã—ã¾ã™ã? 1473 * ã“ã“ã§ã¯ã€å?力文å—ã‚’ã€ã‚ャラクタ(char)åž‹ã«åˆ?§£ã—ã?(&#xZZZZ;)ã«å¤‰æ›ã—ã¦ã?ã¾ã™ã? 1474 * よã£ã¦ã€??常ã«?‘æ–‡å?Shift-JISã§?’Byte,UTF-8ã§?“Byte)ãŒã??˜Byteã«ãªã‚Šã¾ã™ã? 1475 * ã“ã?変æ›ã•ã‚ŒãŸæ–‡å—å?ã‚’ã?HTML上ã§ãã?ã¾ã¾å–り出ã™ã¨ã€å?ã®Unicodeæ–?—ã«æˆ»ã‚‹ç‚ºã€? 1476 * 通常ã®Shift-JISã§ã¯ã€æ‰±ãˆãªã?–‡å?ä¸å›½èªžãªã©)ã§ã‚‚表示å¯èƒ½ã«ãªã‚Šã¾ã™ã? 1477 * ã“ã“ã§ã¯ã€?ãƒã‚¤ãƒˆæ–‡å—ã?ã¿ã€å¤‰æ›ã—ã¦ã?¾ã™ã? 1478 * 1479 * @param value 変æ›å‰ã?æ–?—å? 1480 * 1481 * @return HTMLã®ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—記å·(&#xZZZZ;) 1482 */ 1483 public static String getUnicodeEscape( final String value ) { 1484 if( value == null || value.length() == 0 ) { return ""; } 1485 1486 StringBuilder rtn = new StringBuilder( value.length() * 4 ); 1487 1488 for( int i=0; i<value.length(); i++ ) { 1489 char ch = value.charAt(i); 1490 1491 if( ch > 0xff ) { 1492 String hex = Integer.toHexString( (int)ch ) ; 1493 rtn.append( UTF_STR[hex.length()] ).append( hex ).append( ";" ); 1494 } 1495 else { 1496 rtn.append( ch ); 1497 } 1498 } 1499 1500 return rtn.toString(); 1501 } 1502 1503 /** 1504 * HTML ã®ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—記å·(&#xZZZZ;)ã‚’Unicodeæ–?—å?ã«æˆ»ã—ã¾ã™ã? 1505 * 1506 * HTMLã§ã®ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—æ–‡å—を使用ã—ã¦ç™»éŒ²ã•ã‚ŒãŸæ–‡å—ã‚’ã€Unicodeã«æˆ»ã—ã¾ã™ã? 1507 * (&#xZZZZ;)ã®?˜Byteã‚’ã?ã‚‚ã¨ã®ã‚ãƒ£ãƒ©ã‚¯ã‚¿ã‚³ãƒ¼ãƒ‰ã«æˆ»ã—ã?åˆæ?ã—ã¾ã™ã? 1508 * ã“ã“ã§ã¯ã€??å¸¸ã®æ–?—å?ã«æ··åœ¨ã—ãŸã‚¨ã‚¹ã‚±ãƒ¼ãƒ—æ–‡å—も戻ã›ã‚‹ã‚ˆã†ã«ã—ã¾ã™ã? 1509 * 1510 * @param value HTMLã®ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—記å·(&#xZZZZ;)ã‚’å«ã‚?–‡å—å? 1511 * 1512 * @return 通常ã®Unicodeæ–?—å? 1513 */ 1514 public static String getReplaceEscape( final String value ) { 1515 if( value == null || value.length() == 0 ) { return ""; } 1516 1517 StringBuilder rtn = new StringBuilder( value ); 1518 1519 int st = rtn.indexOf( "&#" ); 1520 while( st >= 0 ) { 1521 if( st+7 < rtn.length() && rtn.charAt( st+7 ) == ';' ) { 1522 int ch = Integer.parseInt( rtn.substring( st+3,st+7 ),16 ); 1523 rtn.replace( st,st+8, Character.toString( (char)ch ) ); 1524 } 1525 st = rtn.indexOf( "&#",st ); 1526 } 1527 1528 return rtn.toString(); 1529 } 1530 1531 /** 1532 * æ–?—å?ã‚’doubleã«å¤‰æ›ã—ã¾ã™ã? 1533 * 1534 * ã“れã¯ã€Double.parseDouble( value ) ã¨ã€ã»ã¼åŒã˜å‹•作を行ã„ã¾ã™ã? 1535 * å†?ƒ¨çš?«ã¯ã€å¼•数㮠カンãƒ?,) を削除ã—ãŸæ–?—å?ã‚’ã?Double.parseDouble( value ) 1536 * ã«æ¸¡ã—ã¾ã™ã? 1537 * ã¾ãŸã?引数ãŒã?null,ã‚¼ãƒæ–?—å?,'_' ã®æ™‚ã«ã¯ã€?.0 ã‚’è¿”ã—ã¾ã™ã? 1538 * 1539 * @param value doubleã«å¤‰æ›ã™ã‚‹å…??æ–?—å? 1540 * 1541 * @return 変æ›å¾Œã?double数値 1542 */ 1543 public static double parseDouble( final String value ) { 1544 double rtn ; 1545 1546 if( value == null || value.length() == 0 || value.equals( "_" ) ) { 1547 rtn = 0.0d; 1548 } 1549 else if( value.indexOf( ',' ) < 0 ) { 1550 rtn = Double.parseDouble( value ); 1551 } 1552 else { 1553 char[] chs = value.toCharArray() ; 1554 int j=0; 1555 for( int i=0;i<chs.length; i++ ) { 1556 if( chs[i] == ',' ) { continue; } 1557 chs[j] = chs[i]; 1558 j++; 1559 } 1560 rtn = Double.parseDouble( String.valueOf( chs,0,j ) ); 1561 } 1562 1563 return rtn ; 1564 } 1565 1566 // 4.0.3.0 (2007/12/26) 色コードã«PURPLE を追åŠ? 1567 private static final Map<String,Color> CLR_MAP; 1568 static { 1569 CLR_MAP = new HashMap<String,Color>(); 1570 CLR_MAP.put( "BLACK" ,Color.BLACK ); 1571 CLR_MAP.put( "BLUE" ,Color.BLUE ); 1572 CLR_MAP.put( "CYAN" ,Color.CYAN ); 1573 CLR_MAP.put( "DARK_GRAY" ,Color.DARK_GRAY ); 1574 CLR_MAP.put( "GRAY" ,Color.GRAY ); 1575 CLR_MAP.put( "GREEN" ,Color.GREEN ); 1576 CLR_MAP.put( "LIGHT_GRAY" ,Color.LIGHT_GRAY ); 1577 CLR_MAP.put( "MAGENTA" ,Color.MAGENTA ); 1578 CLR_MAP.put( "ORANGE" ,Color.ORANGE ); 1579 CLR_MAP.put( "PINK" ,Color.PINK ); 1580 CLR_MAP.put( "RED" ,Color.RED ); 1581 CLR_MAP.put( "WHITE" ,Color.WHITE ); 1582 CLR_MAP.put( "YELLOW" ,Color.YELLOW ); 1583 CLR_MAP.put( "PURPLE" ,new Color( 8388736 ) ); // #800080 1584 } 1585 1586 /** 1587 * カラーã‚ーワードよりã?Colorオブジェクトを作æ?ã—ã¾ã™ã? 1588 * 1589 * æŒ?®šæ–‡å—å?ã¯ã€java.awt.Color クラスã®static フィールドåã§æŒ?®šã—ã¾ã™ã? 1590 * BLACK , BLUE , CYAN , DARK_GRAY , GRAY , GREEN , LIGHT_GRAY , 1591 * MAGENTA , ORANGE , PINK , RED , WHITE , YELLOW , PURPLE ãŒæŒ‡å®šã§ãã¾ã™ã? 1592 * ã¾ãŸã?å…ˆé?ã«ã€? を付ã‘る事ã§ã€?XXXXXXå½¢å¼ã?16bitRGB表è¨?ã§ã‚‚指定å¯èƒ½ã§ã™ã? 1593 * static フィールドåã®Mapを管ç?—ã¦ã?¾ã™ãŒã€å˜åœ¨ã—ãªã??åˆã?ã€ã‚¨ãƒ©ãƒ¼ã«ãªã‚Šã¾ã™ã? 1594 * 1595 * @og.rev 3.8.9.1 (2007/06/29) æ–°è¦ä½œæ? 1596 * @og.rev 4.1.1.0 (2008/02/04) CLR_MAP ã«å˜åœ¨ã—ãªã??åˆã?エラーã«ã—ã¾ã™ã? 1597 * 1598 * @param value java.awt.Color ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã‚’ç¤ºã™æ–‡å—å?ã¾ãŸã?ã€?XXXXXXå½¢å¼ã?16bitRGB表è¨? 1599 * 1600 * @return Colorオブジェクãƒ? 1601 * @see java.awt.Color#BLACK 1602 */ 1603 public static Color getColorInstance( final String value ) { 1604 final Color clr ; 1605 1606 if( value.startsWith("#") ) { 1607 int code = Integer.parseInt( value.substring(1),16 ); 1608 clr = new Color( code ); 1609 } 1610 else { 1611 clr = CLR_MAP.get( value ); 1612 if( clr == null ) { 1613 String errMsg = "æŒ?®šã?色コードã?使用ã§ãã¾ã›ã‚“ Color=[" + value + "]" + CR 1614 + "ColorMap=" + CLR_MAP.keySet().toString(); 1615 throw new RuntimeException( errMsg ); 1616 } 1617 } 1618 1619 return clr; 1620 } 1621 1622 /** 1623 * å¼•æ•°ã«æŒ?®šã•ã‚ŒãŸæ–?—å?ã®Nativeタイプを返ã—ã¾ã™ã? 1624 * 1625 * 1.STRING -> 数値以外ã?æ–?—å?(å…ˆé?ã®'-'ã€ã¾ãŸã?ä»»æ„ã?å ´æ‰??'.'を除ã?ãŒå«ã¾ã‚Œã¦ã?Ÿå ´å? 1626 * 2.DOUBLE -> 1以外ã§'.'ãŒå«ã¾ã‚Œã¦ã?‚‹å ´å? 1627 * 3.INT -> 1,2以å¤? 1628 * 1629 * @og.rev 5.1.8.0 (2010/07/01) org.opengion.fukurou.model.NativeType ã®ãƒ¡ã‚½ãƒ?ƒ‰ã‚’採用ã€ã“ã“ã?å»?¢ 1630 * 1631 * @param str ãƒã‚§ãƒ?‚¯ã‚’è¡Œã†æ–?—å? 1632 * 1633 * @return NATIVEã®åž‹ã?è˜åˆ¥ã‚³ãƒ¼ãƒ? 1634 * @see org.opengion.fukurou.model.NativeType 1635 */ 1636 // public static NativeType getNativeType( final String str ) { 1637 // if( str == null || str.length() == 0 ) { return NativeType.STRING; } 1638 // 1639 // NativeType type = NativeType.INT; 1640 // char ch; 1641 // for( int i=0; i<str.length(); i++ ) { 1642 // ch = str.charAt( i ); 1643 // if( ch < '0' || ch > '9' ) { 1644 // if( ch != '-' || ( ch == '-' && i > 0 ) ) { 1645 // if( ch == '.' ) { 1646 // type = NativeType.DOUBLE; 1647 // } 1648 // else { 1649 // type = NativeType.STRING; 1650 // break; 1651 // } 1652 // } 1653 // } 1654 // } 1655 // return type; 1656 // } 1657 1658 /** 1659 * 引数ã‹ã‚‰spanã‚¿ã‚°ã‚’å–り除ã?¦è¿”ã—ã¾ã™ã? 1660 * 1661 * 引数ãŒã?<span ?¥?¥?¥>XXXX</span>å½¢å¼ã?å ´åˆã?XXXX ã®ã¿å‡ºåŠ›ã—ã¾ã™ã? 1662 * 1663 * @og.rev 4.3.4.3 (2008/12/22) TableWriterã§åˆ©ç”¨ã—ã¦ã?Ÿã‚‚ã?ã‚’ç§»å‹? 1664 * 1665 * @param data å…??Stringæ–?—å? 1666 * 1667 * @return spanã‚¿ã‚°ãŒå–り除ã‹ã‚ŒãŸæ–‡å—å? 1668 */ 1669 public static String spanCut( final String data ) { 1670 String rtn = data; 1671 if( data != null && data.startsWith( "<span" ) ) { 1672 int st = data.indexOf( '>' ); 1673 int ed = data.indexOf( "</span>",st ); 1674 rtn = data.substring( st+1,ed ); 1675 } 1676 return rtn ; 1677 } 1678 1679 /** 1680 * 簡易CSSå½¢å¼ã?フォーマットをã€Mapã«ã‚»ãƒ?ƒˆã—ã¾ã™ã? 1681 * 1682 * 簡易CSSå½¢å¼ã¨ã¯ã€ã‚»ãƒ¬ã‚¯ã‚¿ã®ãªã??{ プãƒãƒ‘ティ1 : 値1 ; ・・・ } å½¢å¼ã¨ã—ã¾ã™ã? 1683 * ã“れをã?プãƒãƒ‘ティ1 㨠値1 ã®Map ã«ã‚»ãƒ?ƒˆã™ã‚‹å‡¦ç?‚’行ã„ã¾ã™ã? 1684 * コメントã?ã€å‰Šé™¤ã•れã¾ã™ã?ã¾ãŸã?åŒä¸??ãƒãƒ‘ティãŒè¨˜è¿°ã•れã¦ã?‚‹å ´åˆã?ã€å¾Œå?ç?‚’採用ã—ã¾ã™ã? 1685 * 1686 * ãªãŠã?入力テã‚ストãŒã€null ã‹ã?{…} ãŒå˜åœ¨ã—ãªã??åˆã?ã€null ã‚’è¿”ã—ã¾ã™ã? 1687 * 1688 * @og.rev 5.6.5.2 (2013/06/21) æ–°è¦è¿½åŠ? 1689 * 1690 * @param cssText 簡易CSSå½¢å¼ã?フォーマット文å—å? 1691 * 1692 * @return パã?ã‚¹çµæžœã®Map 1693 */ 1694 public static Map<String,String> cssParse( final String cssText ) { 1695 Map<String,String> map = null; 1696 1697 if( cssText != null ) { 1698 // ã¾ãšã‚³ãƒ¡ãƒ³ãƒˆã‚’削除ã—ã¾ã™ã? 1699 StringBuilder buf = new StringBuilder( cssText ); 1700 1701 int ad1 = buf.indexOf( "/*" ); 1702 while( ad1 >= 0 ) { 1703 int ad2 = buf.indexOf( "*/" , ad1 ); 1704 if( ad2 < 0 ) { buf = buf.delete( ad1,buf.length() ); break; } // é–‰ã˜ã¦ãªã‘れã°ä»¥é™ã‚’全削除 1705 buf = buf.delete( ad1,ad2+2 ); 1706 ad1 = buf.indexOf( "/*" ); // コメントã?削除ã•れãŸã?ã§ã€å?ã‚ã‹ã‚‰æ¤œç´¢ã™ã‚‹ã€? 1707 } 1708 1709 // 処ç?¯¾è±¡ã¯ã€{ ??} ã®é–“ã?æ–?—å?ã€? 1710 ad1 = buf.indexOf( "{" ); 1711 int ad2 = buf.indexOf( "}",ad1 ); 1712 if( ad1 >= 0 && ad2 > 0 ) { 1713 String tempText = buf.substring( ad1+1,ad2 ); // ã“れãŒå?ç?¯¾è±¡ã®æ–?—å? 1714 1715 String[] recode = tempText.split( ";" ); // KEY1 : VAL1; ã® ; ã§åˆ?‰²ã™ã‚‹ã€? 1716 1717 for( int i=0; i<recode.length; i++ ) { 1718 int ad = recode[i].indexOf( ':' ); 1719 if( ad > 0 ) { 1720 String key = recode[i].substring( 0,ad ).trim(); 1721 String val = recode[i].substring( ad+1 ).trim(); 1722 if( key.isEmpty() || val.isEmpty() ) { continue; } 1723 1724 if( map == null ) { map = new HashMap<String,String>(); } // 対象ãƒ??ã‚¿ãŒã‚る時ã?‘Mapを作りãŸã‹ã£ãŸã?ã§ã€? 1725 map.put( key,val ); 1726 } 1727 } 1728 } 1729 } 1730 return map ; 1731 } 1732 1733 /** 1734 * 引数ã‹ã‚‰ç©ºç™½æ–?—を削除ã—ã¦è¿”ã—ã¾ã™ã? 1735 * 1736 * 1737 * @og.rev 5.6.9.4 (2013/10/31) TableWriterã§åˆ©ç”¨ã—ã¦ã?Ÿã‚‚ã?ã‚’ç§»å‹? 1738 * 1739 * @param data å…??Stringæ–?—å? 1740 * 1741 * @return 空白æ–?—ãŒå–り除ã‹ã‚ŒãŸæ–‡å—å? 1742 */ 1743 public static String deleteWhitespace( final String data ) { 1744 if( data == null || data.length() == 0 ){ 1745 return data; 1746 } 1747 return data.replaceAll( "\\s", "" ) ; 1748 } 1749 }