下載
軟體開發
帳戶
下載
軟體開發
登入
我忘記帳戶名和密碼了
新增帳戶
語言
手冊
語言
手冊
×
登入
登入名稱
密碼
×
我忘記帳戶名和密碼了
繁體中文翻譯狀態
類別:
軟體
人
PersonalForge
Magazine
Wiki
搜尋
OSDN
>
軟體搜索
>
System
>
TERASOLUNA Framework
>
Ticket List/Search
>
待辦事項 #12493
TERASOLUNA Framework
描述
專案概要
開發人員儀表板
專案的網頁
Developers
Image Gallery
List of RSS Feeds
活動
使用統計
歷史
檔案下載
發布列表
Stats
原始碼
儲存庫列表
Subversion
查看儲存庫
待辦事項
待辦事項列表
里程碑列表
類型列表
元件列表
List of frequently used tickets/RSS
新增待辦事項
文檔
Wiki
FrontPage
Title index
Recent changes
Doc Mgr
List Docs
溝通
討論區
討論區列表
公開討論 (1277)
通信論壇
通信論壇列表
terasoluna-information
新聞
待辦事項 #12493
待辦事項列表
新增待辦事項
RSS
StringUtilの改善要望
啟用日期:
2008-05-12 02:17
最後更新:
2008-05-18 01:59
監視
ON
OFF
回報者:
kidotaka
負責人:
(無)
類型:
特色請求
狀態:
開啟
元件:
(無)
里程碑:
(無)
優先權:
5 - 中
嚴重程度:
5 - 中
處理結果:
無
檔案:
3
細節
回覆
kidotakaと言います。
半角=>全角に部分で、半角と全角を保持する2種類のStringで
実現されていますが、あの箇所は変換用のHashMap<Character
(半角),Character(全角)>を用意して実装にした方が早いです。
StringでindexOfで位置を求めてマッピングするやり方である
と、どうしても後ろの方にある文字は遅くなりますが、
HashMapの場合はそういう劣化はほとんどありません。
2種類のStringはアルファベットを先に列挙しているので、カ
タカナは基本的に変換が遅くなる実装になってます。
メモリ的には悪化しますが、検討されてはいかがでしょうか?
あと、私が似たようなクラスを作った際、半角=>全角のマッ
ピングはプロパティに出して、staticイニシャライザで初期
化するようにしていました。
prefix.<半角のユニコード>=<全角のユニコード>
あとは念のためCollections.unmodifiableMapを用いて参照専
用の処置をするなど。
他に、
nextvalue = new Character(chars[i + 1]);
if (nextvalue.equals(new Character('゙'))) {...
} else if (nextvalue.equals(new Character('゚'))) {...
こう書いてある箇所は、オブジェクトを作らずにcharのまま
比較するべきかと思います。
Ticket History (3/5 Histories)
Show older Histories
2008-05-12 07:59
Updated by:
kidotaka
File
2321: StringUtil.java
is attached
2008-05-12 08:02
Updated by:
kidotaka
File
2322: StringUtil.java
is attached
評語
回覆
Logged In: YES
user_id=31181
簡単な修正イメージとしてファイルを添付します。
2008-05-14 16:13
Updated by:
kimuraku
評語
回覆
Logged In: YES
user_id=31940
ご要望ありがとうございます。
半角全角のマッピングに関しては、ご指摘の通り
Mapを利用するのが良いと思います。
次期バージョンアップ時には是非検討させていただきます。
今後ともTERASOLUNAをよろしくお願いいたします。
2008-05-14 16:14
Updated by:
kimuraku
評語
回覆
Logged In: YES
user_id=31940
ご要望ありがとうございます。
半角全角のマッピングに関しては、ご指摘の通り
Mapを利用するのが良いと思います。
次期バージョンアップ時には是非検討させていただきます。
今後ともTERASOLUNAをよろしくお願いいたします。
2008-05-18 01:59
Updated by:
kidotaka
File
2328: StringUtil.java
is attached
評語
回覆
Logged In: YES
user_id=31181
未テストで思い切りバグらせてましたが、
既存のテストケースを実施して動く状態にしてみました。
Attachment File List (
3
)
Attachment File List
StringUtil.java
(29KB)
修正イメージ(未テスト、プロパティ実装なし)
StringUtil.java
(29KB)
修正イメージ(未テスト、プロパティ実装なし)
StringUtil.java
(29KB)
修正イメージ(テスト済み(既存テストケースのみ)、プロパティ実装なし)
編輯
新增評語
You are not logged in.
I you are not logged in, your comment will be treated as an anonymous post. »
登入
新增評語
預覽
提交
半角=>全角に部分で、半角と全角を保持する2種類のStringで
実現されていますが、あの箇所は変換用のHashMap<Character
(半角),Character(全角)>を用意して実装にした方が早いです。
StringでindexOfで位置を求めてマッピングするやり方である
と、どうしても後ろの方にある文字は遅くなりますが、
HashMapの場合はそういう劣化はほとんどありません。
2種類のStringはアルファベットを先に列挙しているので、カ
タカナは基本的に変換が遅くなる実装になってます。
メモリ的には悪化しますが、検討されてはいかがでしょうか?
あと、私が似たようなクラスを作った際、半角=>全角のマッ
ピングはプロパティに出して、staticイニシャライザで初期
化するようにしていました。
prefix.<半角のユニコード>=<全角のユニコード>
あとは念のためCollections.unmodifiableMapを用いて参照専
用の処置をするなど。
他に、
nextvalue = new Character(chars[i + 1]);
if (nextvalue.equals(new Character('゙'))) {...
} else if (nextvalue.equals(new Character('゚'))) {...
こう書いてある箇所は、オブジェクトを作らずにcharのまま
比較するべきかと思います。