[#5219] ruby for perl users — Noritsugu Nakamura <nnakamur@...>

35 messages 1997/11/09
[#5220] Re: ruby for perl users — tateishi@... (Tateishi Takaaki) 1997/11/09

立石です。

[#5224] Re: ruby for perl users — shugo@... (Shugo Maeda) 1997/11/09

前田です。

[#5243] read from subprocess — Kikutani Makoto <kikutani@...>

きくたにです。

17 messages 1997/11/10
[#5250] Re: read from subprocess — matz@... (Yukihiro Matsumoto) 1997/11/11

まつもと ゆきひろです

[#5300] Win32用の Rubyでの tkの使用 — Tomoaki Takebayashi <tota@...>

はじめまして、竹林といいます。

14 messages 1997/11/15
[#5302] Re: Win32用の Rubyでの tkの使用 — WATANABE Hirofumi <eban@...> 1997/11/15

わたなべです.

[#5303] Re: Win32 用の Rubyでの tkの使用 — Tomoaki Takebayashi <tota@...> 1997/11/15

[#5305] Re: Win32 用の Ruby での tk の使用 — aito@...5sun.yz.yamagata-u.ac.jp 1997/11/17

あ伊藤です.

[#5320] ruby 1.0-971118 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

20 messages 1997/11/18
[#5337] Re: ruby 1.0-971118 released — WATANABE Hirofumi <watanabe@...> 1997/11/19

わたなべです.

[#5340] Re: ruby 1.0-971118 released — matz@... (Yukihiro Matsumoto) 1997/11/19

まつもと ゆきひろです

[#5398] 配列への追加について — a-nisida@... (西田明良)

はじめまして、西田@初心者 と申します。m(..)m

16 messages 1997/11/22

[ruby-list:5380] Hash bug ??

From: tamori@...
Date: 1997-11-21 02:40:49 UTC
List: ruby-list #5380
田守と申します。その存在はちょっと前から偶然知ってたんですが(Webのサー
チでひっかかったんで試しにダウンロードしてちょっと動かしてそのまま)
TRY PC!の記事を読んで思いだし、rubyをいじりだして面白さにはまっている
ところです。

さて、(ほんとは扱いたくないんだけど)いわゆる半角カナを全角に直すプロ
グラムを書いていて気が付いたんですが…
#やっつけプログラミングなものでお恥ずかしい…

----
#!/usr/local/bin/ruby
$KCODE = "e"
require "kconv"
require "jcode"

module HanZen
  Table1 = { # 変換テーブル(EUC)
    0xa1 => [0xa1,0xa3],    0xa2 => [0xa1,0xd6],    0xa3 => [0xa1,0xd7],
    0xa4 => [0xa1,0xa2],    0xa5 => [0xa1,0xa6],    0xa6 => [0xa5,0xf2],
    0xa7 => [0xa5,0xa1],    0xa8 => [0xa5,0xa3],    0xa9 => [0xa5,0xa5],
    0xaa => [0xa5,0xa7],    0xab => [0xa5,0xa9],    0xac => [0xa5,0xe3],
    0xad => [0xa5,0xe5],    0xae => [0xa5,0xe7],    0xaf => [0xa5,0xc3],
    0xb0 => [0xa1,0xbc],    0xb1 => [0xa5,0xa2],    0xb2 => [0xa5,0xa4],
    0xb3 => [0xa5,0xa6],    0xb4 => [0xa5,0xa8],    0xb5 => [0xa5,0xaa],
    0xb6 => [0xa5,0xab],    0xb7 => [0xa5,0xad],    0xb8 => [0xa5,0xaf],
    0xb9 => [0xa5,0xb1],    0xba => [0xa5,0xb3],    0xbb => [0xa5,0xb5],
    0xbc => [0xa5,0xb7],    0xbd => [0xa5,0xb9],    0xbe => [0xa5,0xbb],
    0xbf => [0xa5,0xbd],    0xc0 => [0xa5,0xbf],    0xc1 => [0xa5,0xc1],
    0xc2 => [0xa5,0xc4],    0xc3 => [0xa5,0xc6],    0xc4 => [0xa5,0xc8],
    0xc5 => [0xa5,0xca],    0xc6 => [0xa5,0xcb],    0xc7 => [0xa5,0xcc],
    0xc8 => [0xa5,0xcd],    0xc9 => [0xa5,0xce],    0xca => [0xa5,0xcf],
    0xcb => [0xa5,0xd2],    0xcc => [0xa5,0xd5],    0xcd => [0xa5,0xd8],
    0xce => [0xa5,0xdb],    0xcf => [0xa5,0xde],    0xd0 => [0xa5,0xdf],
    0xd1 => [0xa5,0xe0],    0xd2 => [0xa5,0xe1],    0xd3 => [0xa5,0xe2],
    0xd4 => [0xa5,0xe4],    0xd5 => [0xa5,0xe6],    0xd6 => [0xa5,0xe8],
    0xd7 => [0xa5,0xe9],    0xd8 => [0xa5,0xea],    0xd9 => [0xa5,0xeb],
    0xda => [0xa5,0xec],    0xdb => [0xa5,0xed],    0xdc => [0xa5,0xef],
    0xdd => [0xa5,0xf3],    0xde => [0xa1,0xab],    0xdf => [0xa1,0xac] 
  }

  def Hankaku2ZenkakuEuc( str )
    i = 0
    result = "";    bbb = "xx";    bbb2 = "x"
    while i < str.length
      if str.mbchar?( str[i,1] ) then
	# 全角文字(の判定はなんかうまくいってないのでここは無視してください)
	result << str[i,2]
	i = i + 2
      else
	# 半角
	if str[i] >= 0xa0 and str[i] <= 0xdf then
	  # 半角カナ
	  printf("%c", str[i])
	  p Table1[str[i]]
	  if Table1[str[i]] then
	    bbb[0] = Table1[str[i]][0];  bbb[1] = Table1[str[i]][1]
	  else
	    if Table1[str[i]] = 192 then # 謎のエラー回避
	      bbb[0] = 0xa5;  bbb[1] = 0xbf
	    end
	  end
	  result << bbb
	  i = i + 1
	else
	  bbb2[0] = str[i]
	  result << bbb2
	  i = i + 1
	end
      end
    end
    return result
  end
  module_function :Hankaku2ZenkakuEuc
end

test = "" # ←ここに半角カナ文字列を入れる

str = HanZen::Hankaku2ZenkakuEuc( Kconv.toeuc(test))

print Kconv.tojis( str ),"\n"

---
謎のエラー と書いてあるように0xc0(=192)(半角のタ)というキーで
ハッシュをひくとなぜかnilが返されてしまいます。これはバグ?

unix,winの971118のどちらでも起きました。

それから今は不細工な方法で文字コードから文字列へ変換して文字列の
concatinateをやっているのですが、文字コードを簡単に文字列にくっつける
方法はありませんでしょうか。

#あともっとスマートな半角全角変換方法も…

                                                田守@Sony

In This Thread

Prev Next