C# 更改输入字符串C上的每个字母#

C# 更改输入字符串C上的每个字母#,c#,windows,encryption,C#,Windows,Encryption,我想创建一个应用程序conc,其中字符串中的每个字母都会更改其值 例如: Input string: Hello world. 根据这一点: h = f, e = 3, l = 1, l = 1, o = 0, blank space = x, w = s, o = 0, r = 5, l = 1, d = g. So the output should be: f3110xs051g 其主要思想是:如何更改字符串中的每个字母,尝试模拟加密?我尝试在“for”循环中使

我想创建一个应用程序conc,其中字符串中的每个字母都会更改其值

例如:

Input string: Hello world.
根据这一点:

h = f, 
e = 3, 
l = 1, 
l = 1, 
o = 0, 
blank space = x, 

w = s, 
o = 0, 
r = 5, 
l = 1, 
d = g.

So the output should be: f3110xs051g
其主要思想是:如何更改字符串中的每个字母,尝试模拟加密?我尝试在“for”循环中使用string.Replace(),但它返回相同的文本。我怎样才能改变它

非常感谢。

String.Replace()返回一个字符串,不修改原始对象

您需要将字符串设置为replace函数的返回值:

String test = "abcdefg";
test = test.Replace("abc", "xyz");

首先,下次显示您尝试的实际代码

其次是
String.Replace()
不要替换字符串,它会返回被替换的字符串,因此您需要:

text = text.Replace("h","f")
第三,不需要循环,
String.Replace()
替换旧值的所有实例


第四点也是最后一点,请阅读

您可以尝试创建一个字符串、字符串字典,并使用所需的映射加载它。然后创建一个char数组并应用lambda,该lambda将转换字符串值并最终连接结果

Dictionary<char,char> d = new Dictionary<char,char>();
d.Add('h','f'); 
d.Add('e','3');
d.Add('l','1');
d.Add('o','0');
d.Add(' ','x');

String.Concat("hello".Select (x => d[x]));
Dictionary d=newdictionary();
d、 加上('h','f');
d、 添加('e','3');
d、 添加('l','1');
d、 加上('o','0');
d、 加上('','x');
String.Concat(“hello”.Select(x=>d[x]);

但我认为您应该使用加密库。

请发布您目前拥有的代码。您尝试了什么?您需要向我们展示您的代码,以便我们可以帮助您。这里有一个提示:你要做的是一个叫做替换密码的东西。谷歌的一点小功能将大大有助于找到解决方案。另一个提示:C#字符串是不可变的(不能更改)。您可以尝试阅读一本关于C#的好书。创建一个映射(例如
HashSet
),并将每个符号到符号的转换添加为键值对。然后在字符串中的每个字符上循环,在集合中查找它并用适当的值替换它。我不打算为您编写代码,因为您没有表现出任何努力。您可能知道这一点,但为了安全起见,我将发布它(为将来的读者)。你说你想用它来模拟加密。我希望这就是你的意思-只是模拟,而不是真正的加密。。。因为这种类型的东西很容易解码(即使是手工解码)。我也尝试过,但我想改变每个字母,而不仅仅是一个短语或一个字母(无需对我投反对票,我只是想说明为什么你可能仍然使用替换函数获得原始值。如果你不提供任何代码来使用,很难给出准确的建议。我没有对你投反对票。如果有人这样做,我很抱歉。无论如何,谢谢:)哇,我的错。这是我第一次参加Stackoverflow,下次我不会错过代码的。@Panacek Meh没问题,请记住,人们希望OPs在发出请求之前表明他们做了一些努力,比如
字符串。替换
这可能不是最好的选择,C语言中有无数的字符串操作选项#环顾四周,你会发现自己是个不错的选择
Replace
无法解决这个问题。如果你把所有的
h
映射到
f
,那么把所有的
f
映射到
e
(或者别的什么),你不知道哪个
f
,哪个在原来的地方,哪个被映射到了
h
。1)你只需要一本
字典。这会让一切变得更简单。2) 
ToCharArray
是不需要的
string
实现
IEnumerable
3)您应该只使用
string.Concat
而不是
string.Join
,因为您是在对字符串进行concatting,而不是在语义上连接它们。@Servy+1获得非常有建设性的注释。我会在你的允许下应用你的笔记…这就是我为什么要写的原因。@维护我唯一没有改变的是tocharray()。我没有选择。在“hello”中选择。我错过了什么吗?@Servy好吧,虽然我没有在LINQPad上获得选项,但我还是尝试了,而且成功了。。。