【发布时间】:2010-06-13 09:00:44
【问题描述】:
我正在实现一个 c# 程序,该程序应该自动化单字母替换密码。 我目前正在处理的功能是最简单的:用户将提供纯文本和密码字母表,例如:
纯文本(输入):这是一个测试
密码字母:A -> Y, H -> Z, I -> K, S -> L, E -> J, T -> Q
密文(输出):QZKL KL QJLQ
自从我在 perl 中编程一段时间以来,我就想到了使用正则表达式,但是我在 c# 上遇到了一些问题。 首先,我想知道是否有人对正则表达式提出建议,该正则表达式将立即用其对应的密码字母(由用户提供)替换每个字母的所有出现且不覆盖任何内容。
示例:
在这种情况下,用户提供明文“TEST”,在他的密码字母表上,他希望将所有 T 替换为 E,E 替换为 Y,S 替换为 J。我的第一个想法是替换每个出现的带有单个字符的字母,然后将该字符替换为与提供的明文字母相对应的密文。
使用相同的示例词“TEST”,程序提供答案所采取的步骤是:
- 将 T 替换为(比如说)@
- 将 E 替换为 #
- 将 S 替换为 &
- 将@替换为E,#替换为Y,&替换为j
- 输出 = EYJE
此解决方案似乎不适用于大文本。 我想知道是否有人能想到一个单一的正则表达式,它允许我用 26 字母密码字母表中的相应字母替换给定文本中的每个字母,而无需在中间步骤中拆分任务,因为我提到了。
如果它有助于可视化过程,这是我的程序 GUI 的打印屏幕:alt text http://img43.imageshack.us/img43/2118/11618743.jpg
【问题讨论】:
-
C# 不支持正则表达式。你问的是 .NET 正则表达式吗?
-
我在 C# 中使用 System.Text.RegularExpressions 命名空间,但显然标记显示的解决方案更好。谢谢
标签: c# .net regex encryption replace