Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字符串替换(C#)_C# - Fatal编程技术网

字符串替换(C#)

字符串替换(C#),c#,C#,用c#编程。 我试图用另一个字符替换字符串中的每个字符(加密),但我需要一些帮助。我打算用两个数组来做这件事,一个是字母表,另一个是替换值,但我意识到如果整个字母表的大小,我必须做一个else,我真的没有时间。我想知道是否有更简单、更快的方法。这就是我目前所拥有的 private string EncryptFn(string Sinput) { string STencryptedResult = "Null for now"; char[] CAlphabet = "ABCD

用c#编程。
我试图用另一个字符替换字符串中的每个字符(加密),但我需要一些帮助。我打算用两个数组来做这件事,一个是字母表,另一个是替换值,但我意识到如果整个字母表的大小,我必须做一个else,我真的没有时间。我想知道是否有更简单、更快的方法。这就是我目前所拥有的

private string EncryptFn(string Sinput)
{
    string STencryptedResult = "Null for now";
    char[] CAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
    char[] Encrypt = "QWERTYUIOPASDFGHJKLZXCVBNM".ToCharArray();

    return STencryptedResult;
}

谢谢

您可以使用字典:

var map = new Dictionary<char,char> {
  { 'A', 'Q' },
  { 'B', 'W' },
  // etc
};

这不是一种非常强的加密,但您可以使用以下版本,该版本将非常高效,并且只需要很少的数据即可定义加密:

private string EncryptFn(string Sinput)
{
    string coding = "QWERTYUIOPASDFGHJKLZXCVBNM";

    StringBuilder result = new StringBuilder();
    foreach (char c in Sinput)
    {
        int index = (Char.ToUpper(c) - 'A');
        if (index >= 0 && index < coding.Length)
            result.Append(coding[index]);
        else
            result.Append(c);
    }
    return result.ToString();
}
私有字符串加密fn(字符串输入)
{
字符串编码=“qwertyuiopasdfghjklzxcvnm”;
StringBuilder结果=新建StringBuilder();
foreach(字符c在Sinput中)
{
int index=(Char.ToUpper(c)-'A');
如果(索引>=0&&index > p>您可以考虑按位操作,它们对于加密和解密数据非常有用。见下文


输入字符串中的字符数是否有限?但您的
CAlphabet
仅处理“a”到“Z”。其他字符会发生什么情况?。是否有任何原因不使用内置加密提供程序?您现在所做的不是加密。充其量,这是一个密码。你应该和我们FrodoBaggins分享你的最终目标。如果这是一个家庭作业,目前提供的解决方案是合适的。如果这是为了安全地存储密码,则不需要加密密码,而需要对其进行散列。如果这是为了向朋友发送秘密消息,那么也有相应的解决方案导致错误方法“ToUpper”的无重载接受0个ArgumentsHanks,标记为答案!不,你把安德鲁的回答作为回答。这很好,但我希望我的代码比他的代码更好,声明需要的输入更少。哦,我试着打两个标记,对不起:P。我个人更喜欢你的答案,但我也想给他一些信任。我不介意哪个被标记为正确答案,因为它们都给出了期望的结果。但是关于性能,我尝试了一些基准测试(每个解决方案有1000000次迭代),发现使用Char.ToUpper()几乎将运行时间增加了一倍,并且使此解决方案比字典查找更慢。微优化FTW!;]
private string EncryptFn(string Sinput)
{
    string coding = "QWERTYUIOPASDFGHJKLZXCVBNM";

    StringBuilder result = new StringBuilder();
    foreach (char c in Sinput)
    {
        int index = (Char.ToUpper(c) - 'A');
        if (index >= 0 && index < coding.Length)
            result.Append(coding[index]);
        else
            result.Append(c);
    }
    return result.ToString();
}