FAQ/29

http://sakura.qp.land.to/?FAQ%2F29


Top > FAQ > 29

全角・半角の変換メニューが期待の動作をしない

メッセージ

1.5.15.0以降とそれ以前で動作が異なりますので,ご注意ください.

1.5.15.0以降
全角英数→半角英数:英数字+英数記号
半角英数→全角英数:英数字+英数記号
全角カタカナ→半角カタカナ:カナ文字+カナ記号
半角カタカナ→全角カタカナ:カナ文字+カナ記号
1.5.14.0以前
全角英数→半角英数:英数字のみ
半角英数→全角英数:英数字+英数記号
全角カタカナ→半角カタカナ:カナ文字のみ
半角カタカナ→全角カタカナ:カナ文字+カナ記号

これらの理由のため古いマクロが期待をしない場合や,ご自分で独自の変換ルールを利用したい場合は,サンプルを参考に変換マクロを用意してください.

サンプルマクロ

過去ログなどのサンプル

英数字のみ全角→半角(ppa)

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
// 旧S_ToHanEi()の代替例
// 実行後、選択範囲は解除されます
var
	sZen, sHan, sSrc :String;
	iPos, iLoop, iLen :Integer;
begin
	sZen := '0123456789'
		+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
		+ 'abcdefghijklmnopqrstuvwxyz';
	sHAN := '0123456789'
		+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
 
	sSrc := S_GetSelectedString(0);
	iLoop := 1;
	iLen := Length(sSrc);
	repeat
	begin
		iPos := pos(Copy(sSrc, iLoop, 2), sZen);
		if (iPos > 0) then
		begin
			sSrc := Copy(sSrc, 1, iLoop-1)
				+ Copy(sHan, (iPos shr 1)+1, 1)
				+  Delete(sSrc, 1, iLoop+2-1);
			iLen := iLen - 1;
		end;
		iLoop := iLoop + 1;
	end;
	until (iLoop > iLen);
	S_InsText(sSrc);
end;

英数字のみ全角→半角(js)

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
// ToHanEi();の代替例
// WSH1.0 later
var sZen = '0123456789'
    + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    + 'abcdefghijklmnopqrstuvwxyz';
var sHan = '0123456789'
    + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
 
var sSrc = GetSelectedString(0);
var iLen = sSrc.length;
for(iLoop = 0; iLoop < iLen; iLoop++){
    iPos = sZen.indexOf(sSrc.charAt(iLoop));
    if(iPos>-1){
        sSrc = sSrc.substring(0,iLoop) + sHan.charAt(iPos) + sSrc.substring(iLoop+1);
    }
}
InsText(sSrc);

カナ文字のみ全角→半角(js)

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
// ToHanKata();の代替例
// WSH1.0 later
 
var sHan1 = 'ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン';
var sZen1 = 'ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテト'
            + 'ナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン';
 
var sZen1 = 'ァアィイゥウェエォオカキクケコサシスセソタ'
        + 'チッツテトナニヌネノハヒフヘホマミ'
        + 'ムメモャヤュユョヨラリルレロヮワヰヱヲンヵヶー';
 
var sHan1 = 'ァアィイゥウェエォオカキクケコサシスセソタチッツテトナニヌネノハヒフヘホマミムメモャヤュユョヨラリルレロワワイエヲンカケー';
 
var sZen2 = 'ガギグゲゴザジズゼゾダヂヅデドバビブベボヴ';
var sZen3 = 'パピプペポ';
var sHan2 = 'カキクケコサシスセソタチツテトハヒフヘホウ';
var sHan3 = 'ハヒフヘホ';
 
var sSrc = GetSelectedString(0);
var iLen = sSrc.length;
for(iLoop = 0; iLoop < iLen; iLoop++){
    iPos = sZen1.indexOf(sSrc.charAt(iLoop));
    if(iPos>-1){
        sSrc = sSrc.substring(0,iLoop) + sHan1.charAt(iPos) + sSrc.substring(iLoop+1);
    }
}
for(iLoop = 0; iLoop < iLen; iLoop++){
    iPos = sZen2.indexOf(sSrc.charAt(iLoop));
    if(iPos>-1){
        sSrc = sSrc.substring(0,iLoop) + sHan2.charAt(iPos) + '゙' + sSrc.substring(iLoop+1);
        iLen++;
    }
    iPos = sZen3.indexOf(sSrc.charAt(iLoop));
    if(iPos>-1){
        sSrc = sSrc.substring(0,iLoop) + sHan3.charAt(iPos) + '゚' + sSrc.substring(iLoop+1);
        iLen++;
    }
}
InsText(sSrc);

  • もう少し,各マクロの種類ごとに準備した方がよいかも.やや暫定レベルな内容ですが (^^; とりあえず. -- maru 2007-01-29 (月) 00:01:51
    URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

リロード   新規 編集 凍結 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2013-04-10 (水) 16:57:29 (1925d)