字符串替换(C#)

时间:2012-12-12 04:29:56

标签: c#

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

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

    return STencryptedResult;
}

由于

3 个答案:

答案 0 :(得分:6)

您可以使用词典:

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

然后用这样的东西很容易映射每个字符:

var result = new StringBuilder();
foreach( var fromChar in inputString ) {
  char toChar;
  if( ! map.TryGetValue(fromChar, out toChar) ) {
    // Do something with missing char
  }
  result.Append(toChar);
}

答案 1 :(得分:5)

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

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();
}

答案 2 :(得分:0)

您可能会考虑使用BitWise操作,它们非常适合加密和解密数据。请参阅以下内容。

Byte array cryptography