「共通関数」(2006/05/19 (金) 20:42:40) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
<br>
<p>import java.math.BigDecimal;<br>
import java.util.ArrayList;<br>
import java.util.List;<br>
import java.io.UnsupportedEncodingException;</p>
<p><font color="#33CC00">/**<br>
* 文字列ユーティリティクラス。<br><br>
* <br><br>
* 以下の機能を提供します。<br><br>
* <ul><br>
* <li>null チェック</li><br>
* <li>空チェック</li><br>
* <li>有効データチェック</li><br>
* <li>数値チェック</li><br>
* <li>末尾空白削除</li><br>
* <li>半角文字構成チェック</li><br>
* <li>半角数字構成チェック</li><br>
* <li>全角カナ構成チェック</li><br>
* <li>半角カナ構成チェック</li><br>
* <li>指定文字列存在チェック</li><br>
* <li>文字列置換</li><br>
* <li>整数から小数に変換</li><br>
* <li>小数点以下桁数変換</li><br>
* <li>小数から整数に変換</li><br>
* <li>指定桁数まで文字を追加</li><br>
* <li>ゼロパディング</li><br>
* <li>ゼロサプレス</li><br>
* <li>数値計算(加算)</li><br>
* <li>数値計算(減算)</li><br>
* <li>数値計算(乗算)</li><br>
* <li>数値計算(除算)</li><br>
* <li>全角文字チェック</li><br>
* <li>文字列置換</li><br>
* </ul><br>
*/<br></font>public class UtilString {<br>
<br>
/**<br>
* デフォルトコンストラクタ。<br>
*/<br>
private UtilString(){<br>
}<br>
<br>
/**<br>
* オブジェクト data が
nullであるか検査します。<br><br>
* <br><br>
* data が null の場合は true を返します。<br><br>
* data が null でない場合は falseを返します。<br><br>
* <br><br>
* @param data 対象文字列<br>
* @return result チェック結果<br>
*/<br>
public static boolean isNull(Object data){<br>
if(data == null)<br>
return true;<br>
else<br>
return false;<br>
}<br>
<br>
/**<br>
* 文字列 data が空であるか検査します。<br><br>
* <br><br>
*
spaceFlgで末尾の空白を許容するか選択できます。<br><br>
* spaceFlg が
trueの場合は末尾の空白を許容します。<br><br>
* spaceFlg が
falseの場合は末尾の空白を許容しません。<br><br>
* data が空である場合は true を返します。<br><br>
* data が空でない場合は false を返します。<br><br>
* data が null である場合は true を返します。<br><br>
* <br><br>
* @param data 判定対象の文字列<br>
* @param spaceFlg 空白許可フラグ<br>
* @return result チェック結果<br>
*/<br>
public static boolean isEmpty(String data, boolean spaceFlg) {<br>
// null チェック<br>
if(isNull(data))<br>
return true;<br>
<br>
//空白を許容しない場合は末尾の空白をトリムする<br>
if(!spaceFlg)<br>
data = rtrim(data);<br>
<br>
if(data.length() < 1)<br>
return true;<br>
else<br>
return false;<br>
}</p>
<p> /**<br>
* 文字列
dataがデータとして有効であるか検査します。<br><br>
* <br><br>
*データとして有効な範囲は以下の通りです。<br><br>
* ・null でない<br><br>
* ・空でない<br><br>
* ・全角・半角空白だけの文字列でない<br><br>
* 有効データである場合は trueを返します。<br><br>
* 有効データでない場合は
falseを返します。<br><br>
* <br><br>
* @param data 対象文字列<br>
* @return boolean チェック結果<br>
*/<br>
public static boolean isValid(String data) {<br>
// 全角空白を半角空白に置換<br>
String s = replace(data,
UtilConstants.S_FULL_SPACE,UtilConstants.S_HALF_SPACE);<br>
<br>
// 空白を取り除いて判断<br>
if(s.trim().length() == 0)<br>
return false;<br>
else<br>
return true;<br>
}</p>
<p> /**<br>
* 文字列 data が数値であるか検査します。<br><br>
* <br><br>
* 数値の範囲は以下の通りです。<br><br>
* ・null でない<br><br>
* ・空でない<br><br>
* ・全角・半角空白だけの文字列でない<br><br>
* マイナスの値と小数に対応しています。<br><br>
* 数値である場合は true を返す<br><br>
* 数値でない場合は false を返す<br><br>
* <br><br>
* @param data 対象文字列<br>
* @return result チェック結果<br>
*/<br>
public static boolean isNumeric(String data){<br>
// null チェック<br>
if(isNull(data))<br>
return false;<br>
<br>
// 有効データチェック<br>
if(!isValid(data))<br>
return false;<br>
<br>
// BigDecimal に変換<br>
try{<br>
new BigDecimal(data);<br>
}catch(NumberFormatException e){<br>
//例外が発生した場合は数値として正しくない<br>
return false;<br>
}<br>
<br>
return true;<br>
}</p>
<p> /**<br>
* 文字列 data の末尾の空白を削除します。<br><br>
* <br><br>
*末尾の全角空白・半角空白を取り除きます。<br><br>
* 引数が不正の場合は null を返します。<br><br>
* <br><br>
* @param data 文字列<br>
* @return
result 文字列の末尾のスペースを取り除いた文字列<br>
*/<br>
public static String rtrim(String data) {<br>
// null チェック<br>
if(isNull(data))<br>
return UtilConstants.S_HALF_SPACE;<br>
<br>
while(data.endsWith(" ") || data.endsWith(" ")) {<br>
data = data.substring(0, data.length() - 1);<br>
}<br>
<br>
return data;<br>
}<br>
<br>
/**<br>
* 文字列
dataが半角文字で構成されているか検査します。<br><br>
* <dr><br>
* 半角文字の範囲は以下の通りです。<br><br>
* ・半角英字 !~~<br><br>
* ・半角カナ 。~゚<br><br>
* ・null でない<br><br>
* ・空でない<br><br>
* 文字列中の半角空白は許容されます。<br><br>
*
spaceFlgで空白のみの文字列を許容するか選択できます。<br><br>
* spaceFlg が
trueの場合は空白のみの文字列も許容します。<br><br>
* spaceFlg が
falseの場合は空白のみの文字列は許容しません。<br><br>
* 半角文字のみで構成されている場合は
trueを返します。<br><br>
* 半角文字のみで構成されていない場合は
falseを返します。<br><br>
* <br><br>
* @param data 対象の文字列<br>
* @param spaceFlg 空白許容フラグ<br>
* @return result チェック結果<br>
*/<br>
public static boolean isHalfChar(String str, boolean spaceFlg){<br>
// null チェック<br>
if(isNull(str))<br>
return false;<br>
<br>
if(!spaceFlg){<br>
// 有効データチェック<br>
if (!UtilString.isValid(str))<br>
return false;<br>
}</p>
<p> char[] chars = str.toCharArray( );<br>
int length = chars.length;</p>
<p> for (int i = 0; i < length; i++){<br>
// 範囲に入っていない場合は false<br>
if(chars[i] != UtilConstants.C_HALF_SPACE<br>
&&!(UtilConstants.C_HALF_NUMBER_AND_ALPHABET_START <= chars[i]
&&chars[i] <= UtilConstants.C_HALF_NUMBER_AND_ALPHABET_END)<br>
&& !(UtilConstants.C_HALF_KATAKANA_START
<=chars[i] && chars[i] <=
UtilConstants.C_HALF_KATAKANA_END)){<br>
return false;<br>
}<br>
}<br>
return true;<br>
}<br>
<br>
/**<br>
* 文字列
dataが半角数字で構成されているか検査します。<br><br>
* <br><br>
* 半角数字の範囲は以下の通りです。<br><br>
* ・半角数字 u0030~u0039<br><br>
* ・null でない<br><br>
* ・空でない<br><br>
* ・全角・半角空白だけの文字列でない<br><br>
* ・半角空白が混在していない<br><br>
*
periodFlgで半角ピリオド(小数点)を許容するか選択できます。<br><br>
* periodFlg が
trueの場合はピリオドを許容します。<br><br>
* periodFlg が
falseの場合はピリオドを許容しません。<br><br>
* ピリオドが複数混在していても
trueを返します。<br><br>
*
minusFlgで半角ハイフン(マイナス値)を許容するか選択できます。<br><br>
* minusFlg が
trueの場合はハイフンを許容します。<br><br>
* minusFlg が
falseの場合はハイフンを許容しません。<br><br>
* ハイフンが複数混在している場合も
trueを返します。<br>
* 半角数字のみで構成されている場合は
trueを返します。<br><br>
* 半角数字のみで構成されていない場合は
falseを返します。<br><br>
* 数値としての検査をする場合は
isNumeric()メソッドを使用してください。<br><br>
* <br><br>
* @param data 対象の文字列<br>
* @param periodFlg ピリオド許可フラグ<br>
* @param minusFlg ハイフン許可フラグ<br>
* @return result チェック結果<br>
*/<br>
public static boolean isHalfNumber(String data, boolean periodFlg,
booleanhyphenFlg) {<br>
// null チェック<br>
if(isNull(data))<br>
return false;<br>
<br>
// 有効データチェック<br>
if(!isValid(data))<br>
return false;</p>
<p> char[] chars = data.toCharArray( );<br>
<br>
// チェック結果<br>
boolean result = false;<br>
<br>
for(int i = 0; i < chars.length; i++) {<br>
// 初期化<br>
result = false;<br>
<br>
// 範囲に入っている場合に true となる<br>
// 半角数字<br>
if((UtilConstants.C_HALF_NUMBER_START <= chars[i]
&&chars[i] <= UtilConstants.C_HALF_NUMBER_END))<br>
result = true;<br>
<br>
// 半角ピリオド<br>
if(periodFlg)<br>
if(UtilConstants.C_HALF_PERIOD == chars[i])<br>
result = true;<br>
<br>
// 半角マイナス<br>
if(hyphenFlg)<br>
if(UtilConstants.C_HALF_HYPHEN == chars[i])<br>
result = true;<br>
<br>
if(!result)<br>
return false;<br>
}<br>
return result;<br>
}<br>
<br>
/**<br>
* 文字列
dataが全角カナで構成されているか検査します。<br><br>
* <br><br>
* 全角カナの範囲は以下の通りです。<br><br>
* ・全角句読点 u3001~u3002<br><br>
* ・全角横線点 u30FB~u30FC<br><br>
* ・全角濁点半濁点 u309B~u309C<br><br>
* ・全角カナ u30A1~u30FE<br><br>
* ・全角空白 u3000<br><br>
* ・null でない<br><br>
* ・空でない<br><br>
* ・全角・半角空白だけの文字列でない<br><br>
*
spaceFlgで全角空白を許容するか選択できます。<br><br>
* spaceFlg が trueの場合は空白を許容します。<br><br>
* spaceFlg が
falseの場合は空白を許容しません。<br><br>
* 全角カナで構成されている場合は
trueを返します。<br><br>
* 全角カナで構成されていない場合は
falseを返します。<br><br>
* <br><br>
* @param data 対象の文字列<br>
* @param spaceFlg 全角空白許可フラグ<br>
* @return result チェック結果<br>
*/<br>
public static boolean isFullKana(String data, boolean spaceFlg) {<br>
// null チェック<br>
if(isNull(data))<br>
return false;<br>
<br>
// 有効データチェック<br>
if(!isValid(data))<br>
return false;<br>
<br>
char[] chars = data.toCharArray( );<br>
int length = chars.length;<br>
<br>
// チェック結果<br>
boolean result = false;<br>
<br>
for(int i = 0; i < length; i++){<br>
// 初期化<br>
result = false;<br>
<br>
// 範囲に入っている場合に true となる<br>
// 全角カナ<br>
if((UtilConstants.C_FULL_KATAKANA_START <=
chars[i]&& chars[i] <= UtilConstants.C_FULL_KATAKANA_END)<br>
|| (UtilConstants.C_FULL_KUTOUTEN_START <=
chars[i]&& chars[i] <= UtilConstants.C_FULL_KUTOUTEN_END)<br>
|| (UtilConstants.C_FULL_DAKUTEN_HANDAKUTEN_START
<=chars[i] && chars[i]
<=UtilConstants.C_FULL_DAKUTEN_HANDAKUTEN_END)<br>
|| (UtilConstants.C_FULL_YOKOSEN_AND_TEN_START
<=chars[i] && chars[i] <=
UtilConstants.C_FULL_YOKOSEN_AND_TEN_END)){<br>
result = true;<br>
}<br>
<br>
// 全角空白<br>
if(spaceFlg)<br>
if(UtilConstants.C_FULL_SPACE == chars[i])<br>
result = true;<br>
<br>
// result が false の場合、false を返す<br>
if(!result)<br>
return result;<br>
}<br>
<br>
return result;<br>
}</p>
<p> /**<br>
* 文字列
dataが半角カナで構成されているか検査します。<br><br>
* <br><br>
* 半角カナの範囲は以下の通りです。<br><br>
* ・半角カナ uFF61~uFF9F<br><br>
* ・半角空白 <br><br>
* ・null でない<br><br>
* ・空でない<br><br>
* ・全角・半角空白だけの文字列でない<br><br>
*
spaceFlgで半角空白を許容するか選択できます。<br><br>
* spaceFlg が trueの場合は空白を許容します。<br><br>
* spaceFlg が
falseの場合は空白を許容しません。<br><br>
* 半角カナのみで構成されている場合は
trueを返します<br><br>
* 半角カナのみで構成されていない場合は
falseを返します<br><br>
* <br><br>
* @param data 対象の文字列<br>
* @param spaceFlg 半角空白許可フラグ<br>
* @return result チェック結果<br>
*/<br>
public static boolean isHalfKana(String data, boolean spaceFlg) {<br>
// null チェック<br>
if(isNull(data))<br>
return false;<br>
<br>
// 有効データチェック<br>
if(!isValid(data))<br>
return false;<br>
<br>
char[] chars = data.toCharArray( );<br>
int length = chars.length;<br>
<br>
// チェック結果<br>
boolean result = false;<br>
<br>
for(int i = 0; i < length; i++) {<br>
// 初期化<br>
result = false;<br>
<br>
// 範囲に入っている場合に true となる<br>
// 半角カナ<br>
if((UtilConstants.C_HALF_KATAKANA_START <=
chars[i]&& chars[i] <= UtilConstants.C_HALF_KATAKANA_END)) {<br>
result = true;<br>
}<br>
<br>
// 半角空白<br>
if(spaceFlg)<br>
if(UtilConstants.C_HALF_SPACE == chars[i])<br>
result = true;<br>
<br>
// result が false の場合 false を返す<br>
if(!result)<br>
return result;<br>
}<br>
return result;<br>
}</p>
<p> /**<br>
*文字列中に指定語句が存在するか検査します。<br><br>
* <br><br>
* 指定語句が存在する場合は
trueを返します。<br><br>
* 指定語句が存在しない場合は
falseを返します。<br><br>
* <br><br>
* @param data 対象文字列<br>
* @param target 検索語句<br>
* @return result チェック結果<br>
*/<br>
public static boolean isOccurrence(String data, String target){<br>
// null チェック<br>
if(isNull(data) || isNull(target))<br>
return false;<br>
<br>
// size チェック<br>
if(data.length() < target.length())<br>
return false;<br>
<br>
// インデックスリスト<br>
List indexList = new ArrayList();<br>
<br>
// 文字存在チェック<br>
for(int i= 0; i < target.length(); i++){<br>
// インデックス取得<br>
int index = data.indexOf(target.charAt(i));<br>
<br>
//指定語句の文字が対象文字列中に存在するかチェック<br>
if(index == -1)<br>
return false;<br>
<br>
// インデックスリストに追加<br>
indexList.add(String.valueOf(index));<br>
}<br>
<br>
//文字一致チェック(インデックスが連番になっているかチェック)<br>
for(int i = 0; i < indexList.size(); i++){<br>
// i番目のインデックスを取得<br>
int index = Integer.parseInt((String)indexList.get(i));<br>
<br>
// 仮の前インデックスを設定<br>
int preIndex = index - 1;<br>
<br>
//iが0番目以外の時にpreIndexにi-1のインデックスを設定する<br>
if(i != 0)<br>
preIndex = Integer.parseInt((String)indexList.get(i
-1));<br>
<br>
// 連番であるか判断<br>
if(!(index - 1 == preIndex))<br>
return false;<br>
}<br>
<br>
return true;<br>
}<br>
<br>
/**<br>
*文字列中の文字を指定文字に置換します。<br><br>
* <br><br>
* 文字列 data 中の target を
valueに置き換えます。<br><br>
* 引数が不正だった場合は nullを返します。<br><br>
* <br><br>
* @param data 文字列<br>
* @param target 対象の文字<br>
* @param value 置き換える文字<br>
* @return result 置換後の文字列<br>
*/<br>
public static String replace(String data, String target, String value){<br>
// null チェック<br>
if(isNull(data) || isNull(target) || isNull(value))<br>
return null;<br>
<br>
StringBuffer sb = new StringBuffer(data);<br>
<br>
String w = new String(data);<br>
<br>
int start = 0;<br>
int end = 0;</p>
<p> while(true){<br>
start = w.indexOf(target);<br>
<br>
if (start == -1)<br>
return w;<br>
<br>
end = start + target.length();<br>
if(end == -1)<br>
return w;<br>
<br>
if(value == null)<br>
value = UtilConstants.S_EMPTY;<br>
<br>
w = sb.replace(start, end, value).toString();<br>
}<br>
}<br>
<br>
/**<br>
* 文字列整数 data を小数に変換します。<br><br>
* <br><br>
*
dataに小数を指定することで端数処理をすることが可能です。<br><br>
*この場合は指定した小数桁数になるよう端数処理をします。<br><br>
* scaleで小数点以下の桁数を指定できます。<br><br>
* mode で端数処理の方法を選択できます。<br><br>
* mode が
1の場合は端数を切り上げます。(RoundUp)<br><br>
* mode が
2の場合は端数を四捨五入します。(RoundHalfUp)<br><br>
* mode が
3の場合は端数を切り捨てます。(RoundDown)<br><br>
* 引数が不正の場合は null を返します。<br><br>
* <br><br>
* @param data 整数(または小数)<br>
* @param scale 小数点以下桁数<br>
* @param mode 端数処理<br>
* @return result 小数<br>
*/<br>
public static String cnvDecimal(String data, int scale, int mode){<br>
<br>
// data 数値チェック<br>
if(!isNumeric(data))<br>
return null;<br>
<br>
// 端数処理設定<br>
switch(mode){<br>
case 1:<br>
mode = BigDecimal.ROUND_UP;<br>
break;<br>
case 2:<br>
mode = BigDecimal.ROUND_HALF_UP;<br>
break;<br>
case 3:<br>
mode = BigDecimal.ROUND_DOWN;<br>
break;<br>
default:<br>
return null;<br>
}<br>
<br>
// BigDecimal に変換<br>
BigDecimal result = new BigDecimal(data);<br>
// 桁数設定・端数処理<br>
result.setScale(scale, mode);<br>
<br>
return result.toString();<br>
}<br>
<br>
/**<br>
* 文字列小数 data を整数に変換します。<br><br>
* <br><br>
*
modeで小数点第1桁の端数処理の方法を選択できます。<br><br>
* mode が
1の場合は端数を切り上げます。(RoundUp)<br><br>
* mode が
2の場合は端数を四捨五入します。(RoundHalfUp)<br><br>
* mode が
3の場合は端数を切り捨てます。(RoundDown)<br><br>
* 引数が不正の場合は null を返します<br><br>
* <br><br>
* @param data 小数<br>
* @param mode 端数処理<br>
* @return result 整数<br>
*/<br>
public static String cnvIntegral(String data, int mode){<br>
<br>
// data 数値チェック<br>
if(!isNumeric(data))<br>
return null;<br>
<br>
// 端数処理設定<br>
switch(mode){<br>
case 1:<br>
mode = BigDecimal.ROUND_UP;<br>
break;<br>
case 2:<br>
mode = BigDecimal.ROUND_HALF_UP;<br>
break;<br>
case 3:<br>
mode = BigDecimal.ROUND_DOWN;<br>
break;<br>
default:<br>
return null;<br>
}<br>
<br>
// BigDecimal に変換<br>
BigDecimal result = new BigDecimal(data);<br>
// 端数処理<br>
result = result.setScale(0, mode);<br>
<br>
return result.toString();<br>
}<br>
<br>
/**<br>
* 文字列数値を先頭の
0を除いた数値に変換します。<br><br>
* <br><br>
* 変換イメージ[001000 → 1000]<br><br>
* マイナスの値や小数に対応しています。<br><br>
* 引数が不正だった場合は nullを返します。<br><br>
* <br><br>
* @param data 変換前文字列<br>
* @return result 変換後文字列<br>
*/<br>
public static String cnvNumber(String data){<br>
// null チェック<br>
if(UtilString.isNull(data))<br>
return null;<br>
<br>
// 数値チェック<br>
if(!UtilString.isNumeric(data))<br>
return null;<br>
<br>
// 変換<br>
return new BigDecimal(data).toString();<br>
}<br>
<br>
/**<br>
* 文字列 data に挿入文字 appendix を指定桁数
digitになるまで追加します。<br><br>
* <br><br>
* 半角文字に対応しています。<br><br>
* 全角文字は対応していません。<br><br>
*
appendixには半角文字1文字しか指定できません。<br><br>
* 引数が不正の場合は null を返します。<br><br>
* <br><br>
* @param data 対象文字列<br>
* @param appendix 挿入文字<br>
* @param digit 指定桁数<br>
* @return result 変換結果文字<br>
*/<br>
public static String cnvHalfString(String data, String appendix,
intdigit){<br>
<br>
// 対象文字列 null チェック<br>
if(isNull(data))<br>
return null;<br>
<br>
// 挿入文字 null チェック<br>
if(isNull(appendix))<br>
return null;<br>
<br>
// 挿入文字 空チェック<br>
if(appendix.length() == 0)<br>
return null;<br>
<br>
// 挿入文字 サイズチェック<br>
if(appendix.length() != 1)<br>
return null;<br>
<br>
// 対象文字列 半角文字チェック<br>
if(data.length() != 0)<br>
if(!isHalfChar(data, true))<br>
return null;<br>
<br>
// 挿入文字 半角文字チェック<br>
if(!isHalfChar(appendix, true))<br>
return null;<br>
<br>
// data を StringBuffer に変換<br>
StringBuffer after = new StringBuffer(data);<br>
<br>
// ループ回数取得<br>
int loop = digit - data.length();<br>
<br>
// 挿入文字を指定された桁になるまで挿入<br>
for(int i = 0; i < loop; i++)<br>
after.insert(0, appendix);<br>
<br>
return after.toString();<br>
}<br>
<br>
/**<br>
* 文字列 data をゼロパディングします。<br><br>
* <br><br>
* 半角文字に対応しています。<br>
* 全角文字は対応していません。<br>
*マイナスの値や小数は対応していません。<br><br>
* 引数が不正の場合 null を返します。<br><br>
* 変換イメージ[before:100,digit:5 → return:00100]<br>
*<br>
* @param data 変換前の文字列数値<br>
* @param digit 桁数<br>
* @return result 変換後の文字列数値<br>
*/<br>
public static String cnvZeroPadding(String data, int digit){<br>
<br>
// 半角数字チェック<br>
if(!isHalfNumber(data, false, false))<br>
return null;<br>
<br>
// 渡された数値を StringBuffer に変換<br>
StringBuffer after = new StringBuffer(data);<br>
<br>
// 渡された数値の桁数と要求された桁数を比較<br>
if(after.length() < digit){<br>
<br>
// 差分桁数<br>
int ins = digit - after.length();<br>
<br>
// 差分桁数分ループ<br>
for(int i = 0; i < ins; i++){<br>
// 数値(StringBuffer型)の頭に0を追加<br>
after.insert(0, UtilConstants.S_0);<br>
}<br>
}<br>
<br>
// String型に変換<br>
return after.toString();<br>
}<br>
<br>
/**<br>
* 文字列 data をゼロパディングします。<br><br>
* <br><br>
* 半角文字に対応しています。<br>
* 全角文字は対応していません。<br>
*マイナスの値や小数は対応していません。<br><br>
* 引数が不正の場合 null を返します。<br><br>
* 変換イメージ[before:100,digit:5 → return:00100]<br>
*<br>
* @param data 変換前の文字列数値<br>
* @param digit 桁数<br>
* @return result 変換後の文字列数値<br>
*/<br>
public static String cnvZeroPadding(int data, int digit){<br>
return cnvZeroPadding(String.valueOf(data), digit);<br>
}<br>
<br>
/**<br>
* 文字列 data をゼロサプレスします。<br><br>
* <br><br>
* 変換イメージ[before:00100 → return: 100]<br><br>
* 引数が不正の場合は null を返します。<br><br>
* <br><br>
* @param data 変換前の文字列数値<br>
* @return result 変換後の文字列数値<br>
*/<br>
public static String cnvZeroSuppress(String data){<br>
<br>
// 半角数字チェック<br>
if(!isHalfNumber(data, true, true))<br>
return null;<br>
<br>
StringBuffer result = new StringBuffer();<br>
<br>
for(int i = 0; i < data.length(); i++){<br>
char c = data.charAt(i);<br>
if(c == UtilConstants.C_0){<br>
result.append(UtilConstants.S_HALF_SPACE);<br>
}else{<br>
result.append(data.substring(i, data.length()));<br>
break;<br>
}<br>
}<br>
<br>
// String型に変換<br>
return result.toString();<br>
}<br>
<br>
/**<br>
* 数値 data1 に数値 data2 を加算します。<br><br>
* <br><br>
* 引数が不正の場合は null を返します。<br><br>
* <br><br>
* @param data1 左項<br>
* @param data2 右項<br>
* @return result 計算結果<br>
*/<br>
public static String cmpAddition(String data1, String data2){<br>
<br>
// null チェック<br>
if(isNull(data1) || isNull(data2))<br>
return null;<br>
<br>
// 数値チェック<br>
if(!isNumeric(data1) || !isNumeric(data2))<br>
return null;<br>
<br>
// BigDecimalに変換<br>
BigDecimal deci1 = new BigDecimal(data1);<br>
BigDecimal deci2 = new BigDecimal(data2);<br>
<br>
// 計算<br>
deci1 = deci1.add(deci2);<br>
<br>
return deci1.toString();<br>
}<br>
<br>
/**<br>
* 数値 data1 から数値 data2 を減算します。<br><br>
* <br><br>
* 引数が不正の場合は null を返します。<br><br>
* <br><br>
* @param data1 左項<br>
* @param data2 右項<br>
* @return result 計算結果<br>
*/<br>
public static String cmpSubstract(String data1, String data2){<br>
<br>
// null チェック<br>
if(isNull(data1) || isNull(data2))<br>
return null;<br>
<br>
// 数値チェック<br>
if(!isNumeric(data1) || !isNumeric(data2))<br>
return null;<br>
<br>
// BigDecimalに変換<br>
BigDecimal deci1 = new BigDecimal(data1);<br>
BigDecimal deci2 = new BigDecimal(data2);<br>
<br>
// 計算<br>
deci1 = deci1.subtract(deci2);<br>
<br>
return deci1.toString();<br>
}<br>
<br>
/**<br>
* 数値 data1 を数値 data2 で乗算します。<br><br>
* <br><br>
* 引数が不正の場合は null を返します。<br><br>
* <br><br>
* @param data1 左項<br>
* @param data2 右項<br>
* @return result 計算結果<br>
*/<br>
public static String cmpMultiply(String data1, String data2){<br>
<br>
// null チェック<br>
if(isNull(data1) || isNull(data2))<br>
return null;<br>
<br>
// 数値チェック<br>
if(!isNumeric(data1) || !isNumeric(data2))<br>
return null;<br>
<br>
// BigDecimalに変換<br>
BigDecimal deci1 = new BigDecimal(data1);<br>
BigDecimal deci2 = new BigDecimal(data2);<br>
<br>
// 計算<br>
deci1 = deci1.multiply(deci2);<br>
<br>
return deci1.toString();<br>
}<br>
<br>
/**<br>
* 数値 data1 を数値 data2 で除算します。<br><br>
* <br><br>
* scale で小数点以下桁数を指定できます。<br><br>
* mode で端数処理の方法を選択できます。<br><br>
* mode が
1の場合は端数を切り上げます。(RoundUp)<br><br>
* mode が
2の場合は端数を四捨五入します。(RoundHalfUp)<br><br>
* mode が
3の場合は端数を切り捨てます。(RoundDown)<br><br>
* 引数が不正の場合は null を返します。<br><br>
* <br><br>
* @param data1 左項<br>
* @param data2 右項<br>
* @param scale 小数点以下桁数<br>
* @param mode 端数処理<br>
* @return result 計算結果<br>
*/<br>
public static String cmpDivide(String data1, String data2, int scale,
intmode){<br>
<br>
// null チェック<br>
if(isNull(data1) || isNull(data2))<br>
return null;<br>
<br>
// data1 と data2 の数値チェック<br>
if(!isNumeric(data1) || !isNumeric(data2))<br>
return null;<br>
<br>
// 端数処理設定<br>
switch(mode){<br>
case 1:<br>
mode = BigDecimal.ROUND_UP;<br>
break;<br>
case 2:<br>
mode = BigDecimal.ROUND_HALF_UP;<br>
break;<br>
case 3:<br>
mode = BigDecimal.ROUND_DOWN;<br>
break;<br>
default:<br>
return null;<br>
}<br>
<br>
// BigDecimalに変換<br>
BigDecimal deci1 = new BigDecimal(data1);<br>
BigDecimal deci2 = new BigDecimal(data2);<br>
<br>
// 計算<br>
deci1 = deci1.divide(deci2, scale, mode);<br>
<br>
return deci1.toString();<br>
}</p>
<p> /**<br>
* 文字列
dataが全角文字で構成されているか検査します。<br><br>
* <br><br>
* @param item 対象の文字列<br>
* @return result チェック結果<br>
* */<br>
// 全角入力チェック<br>
public static boolean fullSizeCheck(String item) {</p>
<p> byte[] bytes;<br>
String encode = "MS932";</p>
<p> try {<br>
bytes = item.getBytes(encode);</p>
<p> int beams = item.length() * 2;</p>
<p> StringBuffer sb = new StringBuffer(item);</p>
<p> for (int i = 0; i < item.length(); i++) {<br>
if (' ' == sb.charAt(i)) {<br>
beams = beams - 2;<br>
}<br>
}</p>
<p> if (beams != bytes.length) {<br>
return false;<br>
}<br>
} catch (UnsupportedEncodingException uee) {<br>
uee.printStackTrace();<br>
}<br>
return true;<br>
}<br>
<br>
/**<br>
* 文字列 data に挿入文字 appendix を指定桁数
digitになるまで追加します。<br><br>
* <br><br>
* 全角文字に対応しています。<br><br>
* 半角文字は対応していません。<br><br>
*
appendixには半角文字1文字しか指定できません。<br><br>
* 引数が不正の場合は null を返します。<br><br>
* <br><br>
* @param data 対象文字列<br>
* @param appendix 挿入文字<br>
* @param digit 指定桁数<br>
* @return result 変換結果文字<br>
*/<br>
public static String cnvFullString(String data, String appendix, int
digit){<br>
<br>
// 対象文字列 null チェック<br>
if(isNull(data))<br>
return null;<br>
<br>
// 挿入文字 null チェック<br>
if(isNull(appendix))<br>
return null;<br>
<br>
// 挿入文字 空チェック<br>
if(appendix.length() == 0)<br>
return null;<br>
<br>
// 挿入文字 サイズチェック<br>
if(appendix.length() != 1)<br>
return null;<br>
<br>
// 対象文字列 半角文字チェック<br>
if(data.length() != 0)<br>
if(!fullSizeCheck(data))<br>
return null;<br>
<br>
// 挿入文字 半角文字チェック<br>
if(!fullSizeCheck(appendix))<br>
return null;<br>
<br>
// data を StringBuffer に変換<br>
StringBuffer after = new StringBuffer(data);<br>
<br>
// ループ回数取得<br>
int loop = digit - data.length();<br>
<br>
// 挿入文字を指定された桁になるまで挿入<br>
for(int i = 0; i < loop; i++)<br>
after.append(appendix);<br>
<br>
return after.toString(); <br>
}</p>
<p> /**<br>
* 文字列 mainStr 内の From の文字を
Toの文字に置換し<br><br>
* 値を返す<br>
* <br><br>
* @param mailStr 変換対象の文字列<br>
* @param fromStr 置換対象文字<br>
* @param toStr 置換後文字<br>
* @return retStr 変換後文字列<br>
* */<br>
public static String changeString(String mainStr,<br>
String fromStr,<br>
String toStr) {<br>
StringBuffer retStr = new StringBuffer();<br>
for (int i=0;i<mainStr.length();i++){<br>
if (mainStr.substring(i, i+1).equals(fromStr)) {<br>
retStr.append(toStr);<br>
} else {<br>
retStr.append(mainStr.substring(i, i+1));<br>
}<br>
}<br>
return retStr.toString();<br>
}</p>
<p> /**<br>
* 入力文字列に指定文字列を付ける。<br>
* <br><br>
* 例> 入力文字列 : "abc", 指定文字列: "1",
カウント:3,位置:0<br>
* ===> 結果文字列: "111abc"<br>
* @param source 入力文字列<br>
* @param fillStr 指定文字列<br>
* @param count 付けるカウント<br>
* @param position 付ける位置 (0:前, 0の以外:後)<br>
* @return target 結果文字列<br>
*/<br>
public static String addStringNolimited (String source,<br>
StringfillStr,<br>
intcount,<br>
intposition) {<br>
// 入力データをチェックする。<br>
if (source == null<br>
|| fillStr == null<br>
|| count <= 0<br>
|| position < 0) {<br>
return source;<br>
}<br>
String target = null;<br>
StringBuffer buf = new StringBuffer();</p>
<p> for (int i = 0; i < count; i++) {<br>
buf.append(fillStr);<br>
}<br>
if (position == 0) {<br>
target = buf.toString() + source;<br>
} else {<br>
target = source + buf.toString();<br>
}<br>
return target;<br>
}</p>
<p> /**<br>
*入力文字列に指定した長さと同じように、指定文字列を付ける。<br>
* <br><br>
* 例> 入力文字列 : "abc", 指定文字列: "1",
全体長さ:5,位置:0<br>
* ===> 結果文字列: "11abc"<br>
* @param source 入力文字列<br>
* @param fillStr 指定文字列<br>
* @param totalLength 全体長さ<br>
* @param position 付ける位置 (0:前, 0の以外:後)<br>
* @return target 結果文字列<br>
*/<br>
public static String addStringLimited (String source,<br>
StringfillStr,<br>
inttotalLength,<br>
intposition)
{<br>
// 入力データチェックする。<br>
if (source == null<br>
|| fillStr == null<br>
|| totalLength <= 0<br>
|| position < 0) {<br>
return source;<br>
}<br>
if (source.length() >= totalLength) {<br>
return source;<br>
}<br>
int count = 0;<br>
String target = null;<br>
StringBuffer buf = new StringBuffer();</p>
<p> count = totalLength - source.length();<br>
for (int i = 0; i < count; i++) {<br>
buf.append(fillStr);<br>
}<br>
if (position == 0) {<br>
target = buf.toString() + source;<br>
} else {<br>
target = source + buf.toString();<br>
}<br>
return target;<br>
}<br>
<br>
/**<br>
* 対処文字列の長さを得る。<br>
* <br><br>
* 例> 対処文字列 : "ab学校c"<br>
* ===> 文字列の長さ: 7<br>
* @param str 対処文字列<br>
* @return len 文字列の長さ<br>
*/ <br>
public static int getStrLenZenHan(String str) {<br>
// nullをチェックする。<br>
if (isNull(str)) {<br>
return 0;<br>
}<br>
<br>
char[] chars = str.toCharArray( );<br>
int len = 0;<br>
int length = chars.length;</p>
<p> for (int i = 0; i < length; i++) {<br>
// 範囲に入っていない場合は false<br>
if ( chars[i] != UtilConstants.C_HALF_SPACE<br>
&&
!(UtilConstants.C_HALF_NUMBER_AND_ALPHABET_START<= chars[i]<br>
&& chars[i]
<=UtilConstants.C_HALF_NUMBER_AND_ALPHABET_END)<br>
&& !(UtilConstants.C_HALF_KATAKANA_START
<=chars[i]<br>
&& chars[i] <=UtilConstants.C_HALF_KATAKANA_END))
{ // 全角<br>
len += 2;<br>
} else { // 半角<br>
len += 1;<br>
}<br>
} // end of for loop</p>
<p> return len;<br>
}<br>
<br>
/**<br>
*数値全角→半角、半角→全角に変換する。<br><br>
* "1" : 半角→全角<br><br>
* "2" : 全角→半角<br><br>
* <br><br>
* @param type フラグ<br>
* @return str 変換対象の文字列<br>
*/<br>
public static String cnvNumberZenHan(int type, String str) {<br>
StringBuffer sb = new StringBuffer();<br>
<br>
if (str ==null<br>
|| str.length() == 0<br>
|| (type != 1 && type != 2)) {<br>
return str;<br>
}<br>
<br>
int chr;<br>
for (int count = 0; count < str.length(); count++) {<br>
chr = str.charAt(count);<br>
if (type == 1) {<br>
chr = chr + 65248;<br>
} else if (type == 2){<br>
chr = chr - 65248;<br>
<br>
}<br>
sb.append((char)chr);<br>
}<br>
<br>
return sb.toString();<br>
}<br>
<br>
/**<br>
* <br><br>
* @param str String<br>
* @param startIndex int<br>
* @param endIndex int<br>
* @return ret 変換対象の文字列<br>
*/<br>
<br>
public static String substringB(String str, int startIndex, int
endIndex){<br>
<br>
int index = 0;<br>
String work = "";<br>
String ret = "";<br>
<br>
for (int i = 0; i < str.length(); i++) {<br>
work = str.substring(i, i + 1);<br>
index = index + work.getBytes().length;<br>
if (index > startIndex && index <= endIndex){<br>
ret = ret + work;<br>
} else if (index >= endIndex) {<br>
break;<br>
}<br>
}<br>
return ret;<br>
}<br>
}<br></p>
<font size="+0"><br></font>
<p><font size="+0">import java.math.BigDecimal;<br>
import java.util.ArrayList;<br>
import java.util.List;<br>
import java.io.UnsupportedEncodingException;</font></p>
<p><font color="#33CC00">/**<br>
* 文字列ユーティリティクラス。<br><br>
* <br><br>
* 以下の機能を提供します。<br><br>
* <ul><br>
* <li>null チェック</li><br>
* <li>空チェック</li><br>
* <li>有効データチェック</li><br>
* <li>数値チェック</li><br>
* <li>末尾空白削除</li><br>
* <li>半角文字構成チェック</li><br>
* <li>半角数字構成チェック</li><br>
* <li>全角カナ構成チェック</li><br>
* <li>半角カナ構成チェック</li><br>
* <li>指定文字列存在チェック</li><br>
* <li>文字列置換</li><br>
* <li>整数から小数に変換</li><br>
* <li>小数点以下桁数変換</li><br>
* <li>小数から整数に変換</li><br>
* <li>指定桁数まで文字を追加</li><br>
* <li>ゼロパディング</li><br>
* <li>ゼロサプレス</li><br>
* <li>数値計算(加算)</li><br>
* <li>数値計算(減算)</li><br>
* <li>数値計算(乗算)</li><br>
* <li>数値計算(除算)</li><br>
* <li>全角文字チェック</li><br>
* <li>文字列置換</li><br>
* </ul><br>
*/<br></font>public class UtilString {<br>
<br>
/**<br>
* デフォルトコンストラクタ。<br>
*/<br>
private UtilString(){<br>
}<br>
<br>
/**<br>
* オブジェクト data
がnullであるか検査します。<br><br>
* <br><br>
* data が null の場合は true を返します。<br><br>
* data が null でない場合は falseを返します。<br><br>
* <br><br>
* @param data 対象文字列<br>
* @return result チェック結果<br>
*/<br>
public static boolean isNull(Object data){<br>
if(data == null)<br>
return true;<br>
else<br>
return false;<br>
}<br>
<br>
/**<br>
* 文字列 data が空であるか検査します。<br><br>
* <br><br>
*spaceFlgで末尾の空白を許容するか選択できます。<br><br>
* spaceFlg
がtrueの場合は末尾の空白を許容します。<br><br>
* spaceFlg
がfalseの場合は末尾の空白を許容しません。<br><br>
* data が空である場合は true を返します。<br><br>
* data が空でない場合は false を返します。<br><br>
* data が null である場合は true を返します。<br><br>
* <br><br>
* @param data 判定対象の文字列<br>
* @param spaceFlg 空白許可フラグ<br>
* @return result チェック結果<br>
*/<br>
public static boolean isEmpty(String data, boolean spaceFlg) {<br>
// null チェック<br>
if(isNull(data))<br>
return true;<br>
<br>
//空白を許容しない場合は末尾の空白をトリムする<br>
if(!spaceFlg)<br>
data = rtrim(data);<br>
<br>
if(data.length() < 1)<br>
return true;<br>
else<br>
return false;<br>
}</p>
<p> /**<br>
*
文字列dataがデータとして有効であるか検査します。<br><br>
* <br><br>
*データとして有効な範囲は以下の通りです。<br><br>
* ・null でない<br><br>
* ・空でない<br><br>
* ・全角・半角空白だけの文字列でない<br><br>
* 有効データである場合は trueを返します。<br><br>
* 有効データでない場合はfalseを返します。<br><br>
* <br><br>
* @param data 対象文字列<br>
* @return boolean チェック結果<br>
*/<br>
public static boolean isValid(String data) {<br>
// 全角空白を半角空白に置換<br>
String s =
replace(data,UtilConstants.S_FULL_SPACE,UtilConstants.S_HALF_SPACE);<br>
<br>
// 空白を取り除いて判断<br>
if(s.trim().length() == 0)<br>
return false;<br>
else<br>
return true;<br>
}</p>
<p> /**<br>
* 文字列 data が数値であるか検査します。<br><br>
* <br><br>
* 数値の範囲は以下の通りです。<br><br>
* ・null でない<br><br>
* ・空でない<br><br>
* ・全角・半角空白だけの文字列でない<br><br>
* マイナスの値と小数に対応しています。<br><br>
* 数値である場合は true を返す<br><br>
* 数値でない場合は false を返す<br><br>
* <br><br>
* @param data 対象文字列<br>
* @return result チェック結果<br>
*/<br>
public static boolean isNumeric(String data){<br>
// null チェック<br>
if(isNull(data))<br>
return false;<br>
<br>
// 有効データチェック<br>
if(!isValid(data))<br>
return false;<br>
<br>
// BigDecimal に変換<br>
try{<br>
new BigDecimal(data);<br>
}catch(NumberFormatException e){<br>
//例外が発生した場合は数値として正しくない<br>
return false;<br>
}<br>
<br>
return true;<br>
}</p>
<p> /**<br>
* 文字列 data の末尾の空白を削除します。<br><br>
* <br><br>
*末尾の全角空白・半角空白を取り除きます。<br><br>
* 引数が不正の場合は null を返します。<br><br>
* <br><br>
* @param data 文字列<br>
*
@return result 文字列の末尾のスペースを取り除いた文字列<br>
*/<br>
public static String rtrim(String data) {<br>
// null チェック<br>
if(isNull(data))<br>
return UtilConstants.S_HALF_SPACE;<br>
<br>
while(data.endsWith(" ") || data.endsWith(" ")) {<br>
data = data.substring(0, data.length() - 1);<br>
}<br>
<br>
return data;<br>
}<br>
<br>
/**<br>
*
文字列dataが半角文字で構成されているか検査します。<br><br>
* <dr><br>
* 半角文字の範囲は以下の通りです。<br><br>
* ・半角英字 !~~<br><br>
* ・半角カナ 。~゚<br><br>
* ・null でない<br><br>
* ・空でない<br><br>
* 文字列中の半角空白は許容されます。<br><br>
*spaceFlgで空白のみの文字列を許容するか選択できます。<br><br>
* spaceFlg
がtrueの場合は空白のみの文字列も許容します。<br><br>
* spaceFlg
がfalseの場合は空白のみの文字列は許容しません。<br><br>
*
半角文字のみで構成されている場合はtrueを返します。<br><br>
*
半角文字のみで構成されていない場合はfalseを返します。<br><br>
* <br><br>
* @param data 対象の文字列<br>
* @param spaceFlg 空白許容フラグ<br>
* @return result チェック結果<br>
*/<br>
public static boolean isHalfChar(String str, boolean spaceFlg){<br>
// null チェック<br>
if(isNull(str))<br>
return false;<br>
<br>
if(!spaceFlg){<br>
// 有効データチェック<br>
if (!UtilString.isValid(str))<br>
return false;<br>
}</p>
<p> char[] chars = str.toCharArray( );<br>
int length = chars.length;</p>
<p> for (int i = 0; i < length; i++){<br>
// 範囲に入っていない場合は false<br>
if(chars[i] != UtilConstants.C_HALF_SPACE<br>
&&!(UtilConstants.C_HALF_NUMBER_AND_ALPHABET_START
<= chars[i]&&chars[i] <=
UtilConstants.C_HALF_NUMBER_AND_ALPHABET_END)<br>
&&
!(UtilConstants.C_HALF_KATAKANA_START<=chars[i] && chars[i]
<=UtilConstants.C_HALF_KATAKANA_END)){<br>
return false;<br>
}<br>
}<br>
return true;<br>
}<br>
<br>
/**<br>
*
文字列dataが半角数字で構成されているか検査します。<br><br>
* <br><br>
* 半角数字の範囲は以下の通りです。<br><br>
* ・半角数字 u0030~u0039<br><br>
* ・null でない<br><br>
* ・空でない<br><br>
* ・全角・半角空白だけの文字列でない<br><br>
* ・半角空白が混在していない<br><br>
*periodFlgで半角ピリオド(小数点)を許容するか選択できます。<br><br>
* periodFlg
がtrueの場合はピリオドを許容します。<br><br>
* periodFlg
がfalseの場合はピリオドを許容しません。<br><br>
*
ピリオドが複数混在していてもtrueを返します。<br><br>
*minusFlgで半角ハイフン(マイナス値)を許容するか選択できます。<br><br>
* minusFlg
がtrueの場合はハイフンを許容します。<br><br>
* minusFlg
がfalseの場合はハイフンを許容しません。<br><br>
*
ハイフンが複数混在している場合もtrueを返します。<br>
*
半角数字のみで構成されている場合はtrueを返します。<br><br>
*
半角数字のみで構成されていない場合はfalseを返します。<br><br>
*
数値としての検査をする場合はisNumeric()メソッドを使用してください。<br><br>
* <br><br>
* @param data 対象の文字列<br>
* @param periodFlg ピリオド許可フラグ<br>
* @param minusFlg ハイフン許可フラグ<br>
* @return result チェック結果<br>
*/<br>
public static boolean isHalfNumber(String data, boolean
periodFlg,booleanhyphenFlg) {<br>
// null チェック<br>
if(isNull(data))<br>
return false;<br>
<br>
// 有効データチェック<br>
if(!isValid(data))<br>
return false;</p>
<p> char[] chars = data.toCharArray( );<br>
<br>
// チェック結果<br>
boolean result = false;<br>
<br>
for(int i = 0; i < chars.length; i++) {<br>
// 初期化<br>
result = false;<br>
<br>
// 範囲に入っている場合に true となる<br>
// 半角数字<br>
if((UtilConstants.C_HALF_NUMBER_START <=
chars[i]&&chars[i] <= UtilConstants.C_HALF_NUMBER_END))<br>
result = true;<br>
<br>
// 半角ピリオド<br>
if(periodFlg)<br>
if(UtilConstants.C_HALF_PERIOD == chars[i])<br>
result = true;<br>
<br>
// 半角マイナス<br>
if(hyphenFlg)<br>
if(UtilConstants.C_HALF_HYPHEN == chars[i])<br>
result = true;<br>
<br>
if(!result)<br>
return false;<br>
}<br>
return result;<br>
}<br>
<br>
/**<br>
*
文字列dataが全角カナで構成されているか検査します。<br><br>
* <br><br>
* 全角カナの範囲は以下の通りです。<br><br>
* ・全角句読点 u3001~u3002<br><br>
* ・全角横線点 u30FB~u30FC<br><br>
* ・全角濁点半濁点 u309B~u309C<br><br>
* ・全角カナ u30A1~u30FE<br><br>
* ・全角空白 u3000<br><br>
* ・null でない<br><br>
* ・空でない<br><br>
* ・全角・半角空白だけの文字列でない<br><br>
*spaceFlgで全角空白を許容するか選択できます。<br><br>
* spaceFlg が trueの場合は空白を許容します。<br><br>
* spaceFlg
がfalseの場合は空白を許容しません。<br><br>
*
全角カナで構成されている場合はtrueを返します。<br><br>
*
全角カナで構成されていない場合はfalseを返します。<br><br>
* <br><br>
* @param data 対象の文字列<br>
* @param spaceFlg 全角空白許可フラグ<br>
* @return result チェック結果<br>
*/<br>
public static boolean isFullKana(String data, boolean spaceFlg) {<br>
// null チェック<br>
if(isNull(data))<br>
return false;<br>
<br>
// 有効データチェック<br>
if(!isValid(data))<br>
return false;<br>
<br>
char[] chars = data.toCharArray( );<br>
int length = chars.length;<br>
<br>
// チェック結果<br>
boolean result = false;<br>
<br>
for(int i = 0; i < length; i++){<br>
// 初期化<br>
result = false;<br>
<br>
// 範囲に入っている場合に true となる<br>
// 全角カナ<br>
if((UtilConstants.C_FULL_KATAKANA_START <=chars[i]&&
chars[i] <= UtilConstants.C_FULL_KATAKANA_END)<br>
|| (UtilConstants.C_FULL_KUTOUTEN_START
<=chars[i]&& chars[i] <= UtilConstants.C_FULL_KUTOUTEN_END)<br>
||
(UtilConstants.C_FULL_DAKUTEN_HANDAKUTEN_START<=chars[i] &&
chars[i]<=UtilConstants.C_FULL_DAKUTEN_HANDAKUTEN_END)<br>
||
(UtilConstants.C_FULL_YOKOSEN_AND_TEN_START<=chars[i] && chars[i]
<=UtilConstants.C_FULL_YOKOSEN_AND_TEN_END)){<br>
result = true;<br>
}<br>
<br>
// 全角空白<br>
if(spaceFlg)<br>
if(UtilConstants.C_FULL_SPACE == chars[i])<br>
result = true;<br>
<br>
// result が false の場合、false を返す<br>
if(!result)<br>
return result;<br>
}<br>
<br>
return result;<br>
}</p>
<p> /**<br>
*
文字列dataが半角カナで構成されているか検査します。<br><br>
* <br><br>
* 半角カナの範囲は以下の通りです。<br><br>
* ・半角カナ uFF61~uFF9F<br><br>
* ・半角空白 <br><br>
* ・null でない<br><br>
* ・空でない<br><br>
* ・全角・半角空白だけの文字列でない<br><br>
*spaceFlgで半角空白を許容するか選択できます。<br><br>
* spaceFlg が trueの場合は空白を許容します。<br><br>
* spaceFlg
がfalseの場合は空白を許容しません。<br><br>
*
半角カナのみで構成されている場合はtrueを返します<br><br>
*
半角カナのみで構成されていない場合はfalseを返します<br><br>
* <br><br>
* @param data 対象の文字列<br>
* @param spaceFlg 半角空白許可フラグ<br>
* @return result チェック結果<br>
*/<br>
public static boolean isHalfKana(String data, boolean spaceFlg) {<br>
// null チェック<br>
if(isNull(data))<br>
return false;<br>
<br>
// 有効データチェック<br>
if(!isValid(data))<br>
return false;<br>
<br>
char[] chars = data.toCharArray( );<br>
int length = chars.length;<br>
<br>
// チェック結果<br>
boolean result = false;<br>
<br>
for(int i = 0; i < length; i++) {<br>
// 初期化<br>
result = false;<br>
<br>
// 範囲に入っている場合に true となる<br>
// 半角カナ<br>
if((UtilConstants.C_HALF_KATAKANA_START <=chars[i]&&
chars[i] <= UtilConstants.C_HALF_KATAKANA_END)) {<br>
result = true;<br>
}<br>
<br>
// 半角空白<br>
if(spaceFlg)<br>
if(UtilConstants.C_HALF_SPACE == chars[i])<br>
result = true;<br>
<br>
// result が false の場合 false を返す<br>
if(!result)<br>
return result;<br>
}<br>
return result;<br>
}</p>
<p> /**<br>
*文字列中に指定語句が存在するか検査します。<br><br>
* <br><br>
*
指定語句が存在する場合はtrueを返します。<br><br>
*
指定語句が存在しない場合はfalseを返します。<br><br>
* <br><br>
* @param data 対象文字列<br>
* @param target 検索語句<br>
* @return result チェック結果<br>
*/<br>
public static boolean isOccurrence(String data, String target){<br>
// null チェック<br>
if(isNull(data) || isNull(target))<br>
return false;<br>
<br>
// size チェック<br>
if(data.length() < target.length())<br>
return false;<br>
<br>
// インデックスリスト<br>
List indexList = new ArrayList();<br>
<br>
// 文字存在チェック<br>
for(int i= 0; i < target.length(); i++){<br>
// インデックス取得<br>
int index = data.indexOf(target.charAt(i));<br>
<br>
//指定語句の文字が対象文字列中に存在するかチェック<br>
if(index == -1)<br>
return false;<br>
<br>
// インデックスリストに追加<br>
indexList.add(String.valueOf(index));<br>
}<br>
<br>
//文字一致チェック(インデックスが連番になっているかチェック)<br>
for(int i = 0; i < indexList.size(); i++){<br>
// i番目のインデックスを取得<br>
int index = Integer.parseInt((String)indexList.get(i));<br>
<br>
// 仮の前インデックスを設定<br>
int preIndex = index - 1;<br>
<br>
//iが0番目以外の時にpreIndexにi-1のインデックスを設定する<br>
if(i != 0)<br>
preIndex =
Integer.parseInt((String)indexList.get(i-1));<br>
<br>
// 連番であるか判断<br>
if(!(index - 1 == preIndex))<br>
return false;<br>
}<br>
<br>
return true;<br>
}<br>
<br>
/**<br>
*文字列中の文字を指定文字に置換します。<br><br>
* <br><br>
* 文字列 data 中の target
をvalueに置き換えます。<br><br>
* 引数が不正だった場合は nullを返します。<br><br>
* <br><br>
* @param data 文字列<br>
* @param target 対象の文字<br>
* @param value 置き換える文字<br>
* @return result 置換後の文字列<br>
*/<br>
public static String replace(String data, String target, String value){<br>
// null チェック<br>
if(isNull(data) || isNull(target) || isNull(value))<br>
return null;<br>
<br>
StringBuffer sb = new StringBuffer(data);<br>
<br>
String w = new String(data);<br>
<br>
int start = 0;<br>
int end = 0;</p>
<p> while(true){<br>
start = w.indexOf(target);<br>
<br>
if (start == -1)<br>
return w;<br>
<br>
end = start + target.length();<br>
if(end == -1)<br>
return w;<br>
<br>
if(value == null)<br>
value = UtilConstants.S_EMPTY;<br>
<br>
w = sb.replace(start, end, value).toString();<br>
}<br>
}<br>
<br>
/**<br>
* 文字列整数 data を小数に変換します。<br><br>
* <br><br>
*dataに小数を指定することで端数処理をすることが可能です。<br><br>
*この場合は指定した小数桁数になるよう端数処理をします。<br><br>
* scaleで小数点以下の桁数を指定できます。<br><br>
* mode で端数処理の方法を選択できます。<br><br>
* mode
が1の場合は端数を切り上げます。(RoundUp)<br><br>
* mode
が2の場合は端数を四捨五入します。(RoundHalfUp)<br><br>
* mode
が3の場合は端数を切り捨てます。(RoundDown)<br><br>
* 引数が不正の場合は null を返します。<br><br>
* <br><br>
* @param data 整数(または小数)<br>
* @param scale 小数点以下桁数<br>
* @param mode 端数処理<br>
* @return result 小数<br>
*/<br>
public static String cnvDecimal(String data, int scale, int mode){<br>
<br>
// data 数値チェック<br>
if(!isNumeric(data))<br>
return null;<br>
<br>
// 端数処理設定<br>
switch(mode){<br>
case 1:<br>
mode = BigDecimal.ROUND_UP;<br>
break;<br>
case 2:<br>
mode = BigDecimal.ROUND_HALF_UP;<br>
break;<br>
case 3:<br>
mode = BigDecimal.ROUND_DOWN;<br>
break;<br>
default:<br>
return null;<br>
}<br>
<br>
// BigDecimal に変換<br>
BigDecimal result = new BigDecimal(data);<br>
// 桁数設定・端数処理<br>
result.setScale(scale, mode);<br>
<br>
return result.toString();<br>
}<br>
<br>
/**<br>
* 文字列小数 data を整数に変換します。<br><br>
* <br><br>
*modeで小数点第1桁の端数処理の方法を選択できます。<br><br>
* mode
が1の場合は端数を切り上げます。(RoundUp)<br><br>
* mode
が2の場合は端数を四捨五入します。(RoundHalfUp)<br><br>
* mode
が3の場合は端数を切り捨てます。(RoundDown)<br><br>
* 引数が不正の場合は null を返します<br><br>
* <br><br>
* @param data 小数<br>
* @param mode 端数処理<br>
* @return result 整数<br>
*/<br>
public static String cnvIntegral(String data, int mode){<br>
<br>
// data 数値チェック<br>
if(!isNumeric(data))<br>
return null;<br>
<br>
// 端数処理設定<br>
switch(mode){<br>
case 1:<br>
mode = BigDecimal.ROUND_UP;<br>
break;<br>
case 2:<br>
mode = BigDecimal.ROUND_HALF_UP;<br>
break;<br>
case 3:<br>
mode = BigDecimal.ROUND_DOWN;<br>
break;<br>
default:<br>
return null;<br>
}<br>
<br>
// BigDecimal に変換<br>
BigDecimal result = new BigDecimal(data);<br>
// 端数処理<br>
result = result.setScale(0, mode);<br>
<br>
return result.toString();<br>
}<br>
<br>
/**<br>
*
文字列数値を先頭の0を除いた数値に変換します。<br><br>
* <br><br>
* 変換イメージ[001000 → 1000]<br><br>
* マイナスの値や小数に対応しています。<br><br>
* 引数が不正だった場合は nullを返します。<br><br>
* <br><br>
* @param data 変換前文字列<br>
* @return result 変換後文字列<br>
*/<br>
public static String cnvNumber(String data){<br>
// null チェック<br>
if(UtilString.isNull(data))<br>
return null;<br>
<br>
// 数値チェック<br>
if(!UtilString.isNumeric(data))<br>
return null;<br>
<br>
// 変換<br>
return new BigDecimal(data).toString();<br>
}<br>
<br>
/**<br>
* 文字列 data に挿入文字 appendix
を指定桁数digitになるまで追加します。<br><br>
* <br><br>
* 半角文字に対応しています。<br><br>
* 全角文字は対応していません。<br><br>
*appendixには半角文字1文字しか指定できません。<br><br>
* 引数が不正の場合は null を返します。<br><br>
* <br><br>
* @param data 対象文字列<br>
* @param appendix 挿入文字<br>
* @param digit 指定桁数<br>
* @return result 変換結果文字<br>
*/<br>
public static String cnvHalfString(String data, String
appendix,intdigit){<br>
<br>
// 対象文字列 null チェック<br>
if(isNull(data))<br>
return null;<br>
<br>
// 挿入文字 null チェック<br>
if(isNull(appendix))<br>
return null;<br>
<br>
// 挿入文字 空チェック<br>
if(appendix.length() == 0)<br>
return null;<br>
<br>
// 挿入文字 サイズチェック<br>
if(appendix.length() != 1)<br>
return null;<br>
<br>
// 対象文字列 半角文字チェック<br>
if(data.length() != 0)<br>
if(!isHalfChar(data, true))<br>
return null;<br>
<br>
// 挿入文字 半角文字チェック<br>
if(!isHalfChar(appendix, true))<br>
return null;<br>
<br>
// data を StringBuffer に変換<br>
StringBuffer after = new StringBuffer(data);<br>
<br>
// ループ回数取得<br>
int loop = digit - data.length();<br>
<br>
// 挿入文字を指定された桁になるまで挿入<br>
for(int i = 0; i < loop; i++)<br>
after.insert(0, appendix);<br>
<br>
return after.toString();<br>
}<br>
<br>
/**<br>
* 文字列 data をゼロパディングします。<br><br>
* <br><br>
* 半角文字に対応しています。<br>
* 全角文字は対応していません。<br>
*マイナスの値や小数は対応していません。<br><br>
* 引数が不正の場合 null を返します。<br><br>
* 変換イメージ[before:100,digit:5 → return:00100]<br>
*<br>
* @param data 変換前の文字列数値<br>
* @param digit 桁数<br>
* @return result 変換後の文字列数値<br>
*/<br>
public static String cnvZeroPadding(String data, int digit){<br>
<br>
// 半角数字チェック<br>
if(!isHalfNumber(data, false, false))<br>
return null;<br>
<br>
// 渡された数値を StringBuffer に変換<br>
StringBuffer after = new StringBuffer(data);<br>
<br>
// 渡された数値の桁数と要求された桁数を比較<br>
if(after.length() < digit){<br>
<br>
// 差分桁数<br>
int ins = digit - after.length();<br>
<br>
// 差分桁数分ループ<br>
for(int i = 0; i < ins; i++){<br>
// 数値(StringBuffer型)の頭に0を追加<br>
after.insert(0, UtilConstants.S_0);<br>
}<br>
}<br>
<br>
// String型に変換<br>
return after.toString();<br>
}<br>
<br>
/**<br>
* 文字列 data をゼロパディングします。<br><br>
* <br><br>
* 半角文字に対応しています。<br>
* 全角文字は対応していません。<br>
*マイナスの値や小数は対応していません。<br><br>
* 引数が不正の場合 null を返します。<br><br>
* 変換イメージ[before:100,digit:5 → return:00100]<br>
*<br>
* @param data 変換前の文字列数値<br>
* @param digit 桁数<br>
* @return result 変換後の文字列数値<br>
*/<br>
public static String cnvZeroPadding(int data, int digit){<br>
return cnvZeroPadding(String.valueOf(data), digit);<br>
}<br>
<br>
/**<br>
* 文字列 data をゼロサプレスします。<br><br>
* <br><br>
* 変換イメージ[before:00100 → return: 100]<br><br>
* 引数が不正の場合は null を返します。<br><br>
* <br><br>
* @param data 変換前の文字列数値<br>
* @return result 変換後の文字列数値<br>
*/<br>
public static String cnvZeroSuppress(String data){<br>
<br>
// 半角数字チェック<br>
if(!isHalfNumber(data, true, true))<br>
return null;<br>
<br>
StringBuffer result = new StringBuffer();<br>
<br>
for(int i = 0; i < data.length(); i++){<br>
char c = data.charAt(i);<br>
if(c == UtilConstants.C_0){<br>
result.append(UtilConstants.S_HALF_SPACE);<br>
}else{<br>
result.append(data.substring(i, data.length()));<br>
break;<br>
}<br>
}<br>
<br>
// String型に変換<br>
return result.toString();<br>
}<br>
<br>
/**<br>
* 数値 data1 に数値 data2 を加算します。<br><br>
* <br><br>
* 引数が不正の場合は null を返します。<br><br>
* <br><br>
* @param data1 左項<br>
* @param data2 右項<br>
* @return result 計算結果<br>
*/<br>
public static String cmpAddition(String data1, String data2){<br>
<br>
// null チェック<br>
if(isNull(data1) || isNull(data2))<br>
return null;<br>
<br>
// 数値チェック<br>
if(!isNumeric(data1) || !isNumeric(data2))<br>
return null;<br>
<br>
// BigDecimalに変換<br>
BigDecimal deci1 = new BigDecimal(data1);<br>
BigDecimal deci2 = new BigDecimal(data2);<br>
<br>
// 計算<br>
deci1 = deci1.add(deci2);<br>
<br>
return deci1.toString();<br>
}<br>
<br>
/**<br>
* 数値 data1 から数値 data2 を減算します。<br><br>
* <br><br>
* 引数が不正の場合は null を返します。<br><br>
* <br><br>
* @param data1 左項<br>
* @param data2 右項<br>
* @return result 計算結果<br>
*/<br>
public static String cmpSubstract(String data1, String data2){<br>
<br>
// null チェック<br>
if(isNull(data1) || isNull(data2))<br>
return null;<br>
<br>
// 数値チェック<br>
if(!isNumeric(data1) || !isNumeric(data2))<br>
return null;<br>
<br>
// BigDecimalに変換<br>
BigDecimal deci1 = new BigDecimal(data1);<br>
BigDecimal deci2 = new BigDecimal(data2);<br>
<br>
// 計算<br>
deci1 = deci1.subtract(deci2);<br>
<br>
return deci1.toString();<br>
}<br>
<br>
/**<br>
* 数値 data1 を数値 data2 で乗算します。<br><br>
* <br><br>
* 引数が不正の場合は null を返します。<br><br>
* <br><br>
* @param data1 左項<br>
* @param data2 右項<br>
* @return result 計算結果<br>
*/<br>
public static String cmpMultiply(String data1, String data2){<br>
<br>
// null チェック<br>
if(isNull(data1) || isNull(data2))<br>
return null;<br>
<br>
// 数値チェック<br>
if(!isNumeric(data1) || !isNumeric(data2))<br>
return null;<br>
<br>
// BigDecimalに変換<br>
BigDecimal deci1 = new BigDecimal(data1);<br>
BigDecimal deci2 = new BigDecimal(data2);<br>
<br>
// 計算<br>
deci1 = deci1.multiply(deci2);<br>
<br>
return deci1.toString();<br>
}<br>
<br>
/**<br>
* 数値 data1 を数値 data2 で除算します。<br><br>
* <br><br>
* scale で小数点以下桁数を指定できます。<br><br>
* mode で端数処理の方法を選択できます。<br><br>
* mode
が1の場合は端数を切り上げます。(RoundUp)<br><br>
* mode
が2の場合は端数を四捨五入します。(RoundHalfUp)<br><br>
* mode
が3の場合は端数を切り捨てます。(RoundDown)<br><br>
* 引数が不正の場合は null を返します。<br><br>
* <br><br>
* @param data1 左項<br>
* @param data2 右項<br>
* @param scale 小数点以下桁数<br>
* @param mode 端数処理<br>
* @return result 計算結果<br>
*/<br>
public static String cmpDivide(String data1, String data2, int
scale,intmode){<br>
<br>
// null チェック<br>
if(isNull(data1) || isNull(data2))<br>
return null;<br>
<br>
// data1 と data2 の数値チェック<br>
if(!isNumeric(data1) || !isNumeric(data2))<br>
return null;<br>
<br>
// 端数処理設定<br>
switch(mode){<br>
case 1:<br>
mode = BigDecimal.ROUND_UP;<br>
break;<br>
case 2:<br>
mode = BigDecimal.ROUND_HALF_UP;<br>
break;<br>
case 3:<br>
mode = BigDecimal.ROUND_DOWN;<br>
break;<br>
default:<br>
return null;<br>
}<br>
<br>
// BigDecimalに変換<br>
BigDecimal deci1 = new BigDecimal(data1);<br>
BigDecimal deci2 = new BigDecimal(data2);<br>
<br>
// 計算<br>
deci1 = deci1.divide(deci2, scale, mode);<br>
<br>
return deci1.toString();<br>
}</p>
<p> /**<br>
*
文字列dataが全角文字で構成されているか検査します。<br><br>
* <br><br>
* @param item 対象の文字列<br>
* @return result チェック結果<br>
* */<br>
// 全角入力チェック<br>
public static boolean fullSizeCheck(String item) {</p>
<p> byte[] bytes;<br>
String encode = "MS932";</p>
<p> try {<br>
bytes = item.getBytes(encode);</p>
<p> int beams = item.length() * 2;</p>
<p> StringBuffer sb = new StringBuffer(item);</p>
<p> for (int i = 0; i < item.length(); i++) {<br>
if (' ' == sb.charAt(i)) {<br>
beams = beams - 2;<br>
}<br>
}</p>
<p> if (beams != bytes.length) {<br>
return false;<br>
}<br>
} catch (UnsupportedEncodingException uee) {<br>
uee.printStackTrace();<br>
}<br>
return true;<br>
}<br>
<br>
/**<br>
* 文字列 data に挿入文字 appendix
を指定桁数digitになるまで追加します。<br><br>
* <br><br>
* 全角文字に対応しています。<br><br>
* 半角文字は対応していません。<br><br>
*appendixには半角文字1文字しか指定できません。<br><br>
* 引数が不正の場合は null を返します。<br><br>
* <br><br>
* @param data 対象文字列<br>
* @param appendix 挿入文字<br>
* @param digit 指定桁数<br>
* @return result 変換結果文字<br>
*/<br>
public static String cnvFullString(String data, String appendix,
intdigit){<br>
<br>
// 対象文字列 null チェック<br>
if(isNull(data))<br>
return null;<br>
<br>
// 挿入文字 null チェック<br>
if(isNull(appendix))<br>
return null;<br>
<br>
// 挿入文字 空チェック<br>
if(appendix.length() == 0)<br>
return null;<br>
<br>
// 挿入文字 サイズチェック<br>
if(appendix.length() != 1)<br>
return null;<br>
<br>
// 対象文字列 半角文字チェック<br>
if(data.length() != 0)<br>
if(!fullSizeCheck(data))<br>
return null;<br>
<br>
// 挿入文字 半角文字チェック<br>
if(!fullSizeCheck(appendix))<br>
return null;<br>
<br>
// data を StringBuffer に変換<br>
StringBuffer after = new StringBuffer(data);<br>
<br>
// ループ回数取得<br>
int loop = digit - data.length();<br>
<br>
// 挿入文字を指定された桁になるまで挿入<br>
for(int i = 0; i < loop; i++)<br>
after.append(appendix);<br>
<br>
return after.toString(); <br>
}</p>
<p> /**<br>
* 文字列 mainStr 内の From
の文字をToの文字に置換し<br><br>
* 値を返す<br>
* <br><br>
* @param mailStr 変換対象の文字列<br>
* @param fromStr 置換対象文字<br>
* @param toStr 置換後文字<br>
* @return retStr 変換後文字列<br>
* */<br>
public static String changeString(String mainStr,<br>
String fromStr,<br>
String toStr) {<br>
StringBuffer retStr = new StringBuffer();<br>
for (int i=0;i<mainStr.length();i++){<br>
if (mainStr.substring(i, i+1).equals(fromStr)) {<br>
retStr.append(toStr);<br>
} else {<br>
retStr.append(mainStr.substring(i, i+1));<br>
}<br>
}<br>
return retStr.toString();<br>
}</p>
<p> /**<br>
* 入力文字列に指定文字列を付ける。<br>
* <br><br>
* 例> 入力文字列 : "abc", 指定文字列:
"1",カウント:3,位置:0<br>
* ===> 結果文字列: "111abc"<br>
* @param source 入力文字列<br>
* @param fillStr 指定文字列<br>
* @param count 付けるカウント<br>
* @param position 付ける位置 (0:前, 0の以外:後)<br>
* @return target 結果文字列<br>
*/<br>
public static String addStringNolimited (String source,<br>
StringfillStr,<br>
intcount,<br>
intposition)
{<br>
// 入力データをチェックする。<br>
if (source == null<br>
|| fillStr == null<br>
|| count <= 0<br>
|| position < 0) {<br>
return source;<br>
}<br>
String target = null;<br>
StringBuffer buf = new StringBuffer();</p>
<p> for (int i = 0; i < count; i++) {<br>
buf.append(fillStr);<br>
}<br>
if (position == 0) {<br>
target = buf.toString() + source;<br>
} else {<br>
target = source + buf.toString();<br>
}<br>
return target;<br>
}</p>
<p> /**<br>
*入力文字列に指定した長さと同じように、指定文字列を付ける。<br>
* <br><br>
* 例> 入力文字列 : "abc", 指定文字列:
"1",全体長さ:5,位置:0<br>
* ===> 結果文字列: "11abc"<br>
* @param source 入力文字列<br>
* @param fillStr 指定文字列<br>
* @param totalLength 全体長さ<br>
* @param position 付ける位置 (0:前, 0の以外:後)<br>
* @return target 結果文字列<br>
*/<br>
public static String addStringLimited (String source,<br>
StringfillStr,<br>
inttotalLength,<br>
intposition){<br>
// 入力データチェックする。<br>
if (source == null<br>
|| fillStr == null<br>
|| totalLength <= 0<br>
|| position < 0) {<br>
return source;<br>
}<br>
if (source.length() >= totalLength) {<br>
return source;<br>
}<br>
int count = 0;<br>
String target = null;<br>
StringBuffer buf = new StringBuffer();</p>
<p> count = totalLength - source.length();<br>
for (int i = 0; i < count; i++) {<br>
buf.append(fillStr);<br>
}<br>
if (position == 0) {<br>
target = buf.toString() + source;<br>
} else {<br>
target = source + buf.toString();<br>
}<br>
return target;<br>
}<br>
<br>
/**<br>
* 対処文字列の長さを得る。<br>
* <br><br>
* 例> 対処文字列 : "ab学校c"<br>
* ===> 文字列の長さ: 7<br>
* @param str 対処文字列<br>
* @return len 文字列の長さ<br>
*/ <br>
public static int getStrLenZenHan(String str) {<br>
// nullをチェックする。<br>
if (isNull(str)) {<br>
return 0;<br>
}<br>
<br>
char[] chars = str.toCharArray( );<br>
int len = 0;<br>
int length = chars.length;</p>
<p> for (int i = 0; i < length; i++) {<br>
// 範囲に入っていない場合は false<br>
if ( chars[i] != UtilConstants.C_HALF_SPACE<br>
&&!(UtilConstants.C_HALF_NUMBER_AND_ALPHABET_START<=
chars[i]<br>
&&
chars[i]<=UtilConstants.C_HALF_NUMBER_AND_ALPHABET_END)<br>
&&
!(UtilConstants.C_HALF_KATAKANA_START<=chars[i]<br>
&& chars[i]
<=UtilConstants.C_HALF_KATAKANA_END)){ // 全角<br>
len += 2;<br>
} else { // 半角<br>
len += 1;<br>
}<br>
} // end of for loop</p>
<p> return len;<br>
}<br>
<br>
/**<br>
*数値全角→半角、半角→全角に変換する。<br><br>
* "1" : 半角→全角<br><br>
* "2" : 全角→半角<br><br>
* <br><br>
* @param type フラグ<br>
* @return str 変換対象の文字列<br>
*/<br>
public static String cnvNumberZenHan(int type, String str) {<br>
StringBuffer sb = new StringBuffer();<br>
<br>
if (str ==null<br>
|| str.length() == 0<br>
|| (type != 1 && type != 2)) {<br>
return str;<br>
}<br>
<br>
int chr;<br>
for (int count = 0; count < str.length(); count++) {<br>
chr = str.charAt(count);<br>
if (type == 1) {<br>
chr = chr + 65248;<br>
} else if (type == 2){<br>
chr = chr - 65248;<br>
<br>
}<br>
sb.append((char)chr);<br>
}<br>
<br>
return sb.toString();<br>
}<br>
<br>
/**<br>
* <br><br>
* @param str String<br>
* @param startIndex int<br>
* @param endIndex int<br>
* @return ret 変換対象の文字列<br>
*/<br>
<br>
public static String substringB(String str, int startIndex,
intendIndex){<br>
<br>
int index = 0;<br>
String work = "";<br>
String ret = "";<br>
<br>
for (int i = 0; i < str.length(); i++) {<br>
work = str.substring(i, i + 1);<br>
index = index + work.getBytes().length;<br>
if (index > startIndex && index <= endIndex){<br>
ret = ret + work;<br>
} else if (index >= endIndex) {<br>
break;<br>
}<br>
}<br>
return ret;<br>
}<br>
}<br></p>
表示オプション
横に並べて表示:
変化行の前後のみ表示: