プロプログラマ -Flex,Air,C#,Oracle,HTML5+JS-

プログラマーを職業としてます。 Flex,Air,C#,Oracle,HTML+JSの言語ノウハウを中心に情報発信していきます

[Java] 文字列から全角文字のみを除去する

文字列の中から全角文字のみを除去するメソッドを作りました。

あまり利用価値がないように思いますが、Javaはバッチ処理用途でもよく使われる言語です。
旧システムとのやり取りでは、全角文字が不可の場合がまだまだありますので、
そのような場合に全角文字を全て除去する必要があるわけです。

ご参考程度に

public class ZenkakuTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// "新しいアサが キタ" → "アサタ"
		System.out.println(removeDoubleByte("新しいアサが キタ"));
		
		// "新しいアサが キタ" → "***アサ***タ"
		System.out.println(removeDoubleByte("新しいアサが キタ", "*"));
	}
	
	/**
	 * 全角文字を取り除く
	 *
	 * @param source 対象文字列
	 * @param replaceText 全角文字の場合に替わりに置き換える文字
	 * @return 処理後文字列
	 */
	public static String removeDoubleByte(String source) {
		return removeDoubleByte(source, "");
	}

	/**
	 * 全角文字を取り除く<br>
	 * 全角文字は他の文字に置き換える
	 *
	 * @param source 対象文字列
	 * @param replaceText 全角文字の場合に替わりに置き換える文字
	 * @return 処理後文字列
	 */
	public static String removeDoubleByte(String source, String replaceText) {
		String result = "";
		for (int i = 0; i < source.length(); i++) {
			char c = source.charAt(i);
			if (isDoubleByte(c)) {
				result += replaceText;
			} else {
				result += String.valueOf(c);
			}
		}
		return result;
	}

	/**
	 * 指定した文字が全角かを判定する
	 * 
	 * @param source 判定対象文字
	 * @return trueなら全角
	 */
	private static Boolean isDoubleByte(char source) {
		if ((source <= '\u007e') || // 英数字
			(source == '\u00a5') || // \記号
			(source == '\u203e') || // ~記号
			(source >= '\uff61' && source <= '\uff9f') // 半角カナ
		) {
			// 半角
			return false;
		} else {
			// 全角
			return true;
		}
	}

}

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

,

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください