下载
开发软件
账户
下载
开发软件
登录
我忘记用户名和密码了
创建帐户
语言
帮助
语言
帮助
×
登录
登录名
密码
×
我忘记用户名和密码了
简体中文翻译状态
类别:
软件
用户
PersonalForge
Magazine
Wiki
搜索
OSDN
>
浏览软件
>
System
>
TERASOLUNA Framework
>
Ticket List/Search
>
任务单 #12493
TERASOLUNA Framework
描述
项目概述
开发人员仪表板
项目的网页
开发人员
Image Gallery
List of RSS Feeds
Activity
统计
历史
下载
List of Releases
统计
源代码
Code Repository list
Subversion
查看仓库
任务单
Ticket List
里程碑列表
Type List
组件列表
List of frequently used tickets/RSS
Submit New Ticket
文档
Wiki
FrontPage
Title index
Recent changes
Doc Mgr
列表文档
沟通
论坛
List of Forums
公开讨论 (1277)
Mailing Lists
list of ML
terasoluna-information
新闻
任务单 #12493
Ticket List
Submit New Ticket
RSS
StringUtilの改善要望
开放日期:
2008-05-12 02:17
最后更新:
2008-05-18 01:59
monitor
ON
OFF
报告人:
kidotaka
属主:
(无)
类型:
Feature Requests
状态:
开启
组件:
(无)
里程碑:
(无)
优先:
5 - Medium
严重性:
5 - Medium
处理结果:
无
文件:
3
Details
回复
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のまま
比較するべきかと思います。
任务单历史 (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)
修正イメージ(テスト済み(既存テストケースのみ)、プロパティ実装なし)
编辑
Add Comment
You are not logged in.
I you are not logged in, your comment will be treated as an anonymous post. »
登录名
Add Comment
预览
Submit
半角=>全角に部分で、半角と全角を保持する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のまま
比較するべきかと思います。