【初学者求教】求个思路(字符串中的某些字符能替换成中文么?)

OROCHIORI601 2010-07-19 09:05:07
先解释下如下三条语句的含义

LS|DA100719|TI161039|
解释:LS代表“连接成功”,DA代表日期,TI代表时间,既—>10年7月19日,16点10分39秒

GI|RN3017|G#17277|GN(EN) Mr Messi|GLEA|GV1|
解释:GI代表"入住",RN代表“房间号”,G#代表“客人编号”,GN代表“姓名”,GL代表“语言”,GV代表“VIP会员”

GO|RN1007|G#17277|GSN|
解释:GO代表“退房”,RN代表“房间号”,G#代表“客人编号”,GS代表“共享”(N表示不共享)。



我的目标是—>程序自动将这三条语句翻译成客户可以看得懂的文字。

比如这三条语句最终在richTextBox中要显示的结果是—>

连接成功|日期100719|时间161039|
入住|房间号3017|客人编号17277|姓名(EN) Mr Messi|语言EA|VIP1|
退房|房间号1007|客人编号17277|共享N|

情况就是这样的,我现在能想到的思路就是将固定的英文字母组合替换成对应的中文。比如将字符串“GI|RN3017|G#17277|GN(EN) Mr Messi|GLEA|GV1|”中的GI替换成“入住”,

“G#”替换成“客人编号”,将字符串“GO|RN1007|G#17277|GSN|”中的"GO"替换成“退房”,等等...

不知道程序中应该怎样实现替换功能?
...全文
317 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿非 2010-07-20
  • 打赏
  • 举报
回复
饺子,你应该继续弄完。然后测试 贴下测试数据和效率
OROCHIORI601 2010-07-20
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 wuyazhe 的回复:]
C# code

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;

namespace CSharpConsole02
{
class Program
{
static void Ma……
[/Quote]
好东西,学习,收藏!!!!!
guanglin522 2010-07-20
  • 打赏
  • 举报
回复
顶个,
每天回帖即可获得10分可用分!
兔子-顾问 2010-07-20
  • 打赏
  • 举报
回复

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;

namespace CSharpConsole02
{
class Program
{
static void Main(string[] args)
{
Dictionary<string, string> rule = new Dictionary<string, string>();
rule.Add("LS", "连接成功");
rule.Add("DA", "日期");
rule.Add("TI", "时间");
rule.Add("GI", "入住");
rule.Add("RN", "房间号");
rule.Add("G#", "客人编号");
rule.Add("GN", "姓名");
rule.Add("GL", "语言");
rule.Add("GV", "VIP会员");
rule.Add("GO", "退房");
rule.Add("GS", "共享");
rule.Add("GSN", "不共享");
string[] lines = new string[] {
"LS|DA100719|TI161039|",
"GI|RN3017|G#17277|GN(EN) Mr Messi|GLEA|GV1|",
"GO|RN1007|G#17277|GSN|"};
foreach (string line in lines)
{
Console.WriteLine(MultiReplace(line, rule));
}
Console.ReadKey();
}

public static string MultiReplace(string s, Dictionary<string, string> rule)
{
//创建规则文本
StringBuilder regexBuilder = new StringBuilder();
foreach (string key in rule.Keys) regexBuilder.Append(Regex.Escape(key) + "|");
regexBuilder.Remove(regexBuilder.Length - 1, 1);
return Regex.Replace(s, regexBuilder.ToString(), delegate(Match m) { return rule[m.Value]; });
}
}
}


这样可以灵活的构造这个规则队列。扩展性很好,效率回头有时间再测试。应该比多次的replace要好。因为这只要一次循环和创建,如果文本短看不出,问本长,效果就看的出了。
lgzh2010 2010-07-20
  • 打赏
  • 举报
回复
正则表达式、、、
yangna56 2010-07-20
  • 打赏
  • 举报
回复
结果如何
兔子-顾问 2010-07-19
  • 打赏
  • 举报
回复
.Replace().Replace()

....

这样很慢的。。。

刚聊天去了,写了一半的例子,看你结贴了。懒得继续弄了。。。不过如果文本多,replace().replace的效率会有明显影响的。
OROCHIORI601 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 sandy945 的回复:]
.Replace().Replace()

多个替换是这样的形式
[/Quote]
一句话,解决问题。
回去敢末班车...
谢谢!!!!!
阿非 2010-07-19
  • 打赏
  • 举报
回复
.Replace().Replace()

多个替换是这样的形式
OROCHIORI 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 sdfkfkd 的回复:]
如果不是批量解释的话,我觉得你就用replace挺好的
[/Quote]
而且就那么几句话,就那么几种,不是很复杂,就是不知道replace多处替换函数怎么写,在找
OROCHIORI 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 sdfkfkd 的回复:]
如果不是批量解释的话,我觉得你就用replace挺好的
[/Quote]
恩不是批量,酒店阿,入住和退房没那么频繁
特别 2010-07-19
  • 打赏
  • 举报
回复
如果不是批量解释的话,我觉得你就用replace挺好的
hadakanoyichigo 2010-07-19
  • 打赏
  • 举报
回复
dingyige
OROCHIORI 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 dancingbit 的回复:]
1.每一条待替换的内容放到一个StringBuilder中。
2.替换对放到集合中。
3.对每一个StringBuilder,遍历集合,使用StringBuilder.Replace(string,string)方法完成替换。

不建议用string.Replace。
[/Quote]
能否给了例子..
dancingbit 2010-07-19
  • 打赏
  • 举报
回复
1.每一条待替换的内容放到一个StringBuilder中。
2.替换对放到集合中。
3.对每一个StringBuilder,遍历集合,使用StringBuilder.Replace(string,string)方法完成替换。

不建议用string.Replace。
OROCHIORI 2010-07-19
  • 打赏
  • 举报
回复
利用Replace,可以实现替换多个的效果么?
比如LS|DA100719|TI161039|
替换三个—>LS替换成“连接成功” DA替换成“日期” TI替换成“时间”
OROCHIORI 2010-07-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 denbes 的回复:]
Replace(string,string);
试下
[/Quote]
替换作用的正则是建立在 Replace(string,string);的么?
我可以替换一个—>
richTextBox1.Text += sText.ToString().Replace("LS","连接成功")+"\r\n";
但是好像不能替换多?
fable说 2010-07-19
  • 打赏
  • 举报
回复
正则表达式.
denbes 2010-07-19
  • 打赏
  • 举报
回复
Replace(string,string);
试下
OROCHIORI 2010-07-19
  • 打赏
  • 举报
回复
我查了下,真抽象...我这种需求应该只有正则才行吧..
加载更多回复(9)

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧