| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1331 人关注过本帖
标题:[讨论]如何用HashTable处理String
只看楼主 加入收藏
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
 问题点数:0 回复次数:6 
[讨论]如何用HashTable处理String
假如我有一个字符串 tempStr="Hello ! 小明";
如果我不想要汉字 那么就应该扫描 tempStr 把它换为 "Hello! XiaoMing"
这样的话原来的字符串长度就会变动
如果用传统语言处理起来比较困难
因为对于变动的东西总是那么难以让人把握
但是前段学会了用ArrayList处理这个就比较简单了
下面这个方法就是处理字符串过程


public string WordsConvert()
{
ArrayList tempList=new ArrayList ();
string tempStr=string.Empty ;
for(int i=0;i<messageIn.Length ;i++)
{
switch(messageIn[i])
{
case '小':
tempList.Add ("Xiao");
break;
case '明':
tempList.Add("Ming");
break;
default:
tempList.Add (messageIn[i]);
break;
}
}
for(int i=0;i<tempList.Count ;i++)
{
tempStr+=tempList[i].ToString ();
}
messageOut=tempStr.ToCharArray ();
return tempStr;
}


用这种方法处理的话过程比较简单
原理也比较好理解
但是问题在于如果以后要替换的字增加
那么我必须修改代码
不停的在程序里增加CASE语句
这显然与现代高效率开发 低成本维护的原则有悖
后来经理告诉我可以考虑用HashTable的方法来处理可以更快
但是没有告诉我相关方面的知识
因此只有靠自己了
于是我就来到了论坛
请对这方面比较了解的各位仁兄不另赐教

[此贴子已经被作者于2006-7-18 10:37:55编辑过]

搜索更多相关主题的帖子: String HashTable 
2006-07-18 10:37
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 

幫你改了下
[CODE]
public class Class1
{
public Class1()
{

}

private Hashtable table=new Hashtable();
/// <summary>
/// 添加需要替換的字
/// </summary>
public void addone(string[] keys,string[] values)
{
if(keys.Length!=values.Length)
return;
else
{
for(int i=0;i<keys.Length;i++)
{
table.Add(keys[i],values[i]);
}
}
}

/// <summary>
/// 返回替換後的string
/// </summary>
public string newstring(string inputString)
{

StringBuilder retVal = new StringBuilder();
if ((inputString != null) && (inputString != String.Empty))
{
inputString = inputString.Trim();

for (int i = 0; i < inputString.Length; i++)
{
if(table.ContainsKey(inputString[i].ToString()))
retVal.Append(table[inputString[i].ToString()]);
else
retVal.Append(inputString[i]);
}

}
return retVal.ToString();
}
}
[/CODE]


[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-07-18 11:22
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 
读的不是很明白
麻烦楼上的给加点注释吧

[此贴子已经被作者于2006-7-18 12:36:53编辑过]


此号自封于2006年11月30日
2006-07-18 12:15
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 

读的差不多了
我把你的做成一个类了
我想问的是
传参string[]类型的数如何操作比较简单点
目前我按照下面的代码跑是不是太笨了点袄

string[]tempStrArray=new string [1];
string[]tempNewArray=new string [1];
tempStrArray[0]="我";
tempNewArray[0]="wo";

WordsChange wc=new WordsChange ();
wc.addone(tempStrArray,tempNewArray);
string returnStr=wc.newstring("我们");

[此贴子已经被作者于2006-7-18 12:54:41编辑过]


此号自封于2006年11月30日
2006-07-18 12:47
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
以下是引用noshow在2006-7-18 12:47:41的发言:

读的差不多了
我把你的做成一个类了
我想问的是
传参string[]类型的数如何操作比较简单点
目前我按照下面的代码跑是不是太笨了点袄

string[]tempStrArray=new string [1];
string[]tempNewArray=new string [1];
tempStrArray[0]="我";
tempNewArray[0]="wo";

WordsChange wc=new WordsChange ();
wc.addone(tempStrArray,tempNewArray);
string returnStr=wc.newstring("我们");

string[] str=new string[]{"wo","ni"};
經常需要傳單個的話,可以重載一個方法 參數改為string

[此贴子已经被作者于2006-7-18 13:05:20编辑过]


[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-07-18 13:03
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 

哈哈
我说自己为什么一直编程没有长进呢
咋就不知道重载一个呢
哎 猪脑啊
没有发散思维
不过还是谢过了

总结了一下:
刚开始我采用的那种方法适合初学者
因为比较好理解而且一般不牵扯到维护和移植的问题
用的还是面向过程的思想

后面chenjin145仁兄写的比较现代化
便于以后移植扩充之用
而且是面向对象的思想

再次感谢


此号自封于2006年11月30日
2006-07-18 13:37
a1984drr
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-7-17
收藏
得分:0 
恩不错啊
2006-07-18 15:03
快速回复:[讨论]如何用HashTable处理String
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.045734 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved