【问题标题】:Is there a Function to ignore chars like 'á' 'é' 'ó' 'í' and 'ú'? [duplicate]是否有一个函数可以忽略“ᔓ锓ó”“í”和“ú”等字符? [复制]
【发布时间】:2020-02-15 18:44:42
【问题描述】:

我正在做一个凯撒密码和解密,我需要忽略字符串中的这个字母:“á é ó í ú”,因为我们也需要用西班牙语加密文本,有没有什么函数可以忽略这个字母或一个如何在密码中更改它们并且仍然在解密中工作?

private char cipher(char ch, int key)
        {
            if (!char.IsLetter(ch))
            {
                return ch;
            }
            char d = char.IsUpper(ch) ? 'A' : 'a';
            return (char)((((ch + key) - d) % 26) + d);
        }

我期望的是,如果我输入一个字符串,如:"wéts" 和一个键 an2,我会得到一个输出 "uéiy",当我破译 "uéiy" 时,我会再次得到 "wéts"

【问题讨论】:

  • 这看起来像 26 个字符(拉丁语?)字母表上的模数学 - 当您接受超过 26 个字符时,这显然不起作用。教你的系统了解其他角色。

标签: c#


【解决方案1】:

好的,给你,这是 65536 个字符的字母凯撒密码实现:

private char cipher(char ch, int key)
{
  return ch + key;
}
private char decipher(char ch, int key)
{
  return ch - key;
}

或者这里只是忽略非拉丁字母:

private char cipher(char ch, int key)
{
  if (char < 'A' || char > 'z' || (char > 'Z' && char < 'a'))
  {
    return ch;
  }
  char d = char.IsUpper(ch) ? 'A' : 'a';
  return (char)((((ch + key) - d) % 26) + d);
}

【讨论】:

  • 哦,谢谢,这适用于这个项目,谢谢
猜你喜欢
  • 1970-01-01
  • 2014-11-30
  • 1970-01-01
  • 1970-01-01
  • 2019-09-26
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
相关资源
最近更新 更多