C# 是否有一个函数可以忽略像'á''é''ó''';和'ú';?
我在做一个凯撒密码和解密,我需要忽略字符串中的字母:“áéóíú”,因为我们也需要用西班牙语对文本进行加密,有没有什么功能可以忽略这些字母,或者有什么方法可以在密码中更改它们,并且仍然在解密中工作C# 是否有一个函数可以忽略像'á''é''ó''';和'ú';?,c#,C#,我在做一个凯撒密码和解密,我需要忽略字符串中的字母:“áéóíú”,因为我们也需要用西班牙语对文本进行加密,有没有什么功能可以忽略这些字母,或者有什么方法可以在密码中更改它们,并且仍然在解密中工作 private char cipher(char ch, int key) { if (!char.IsLetter(ch)) { return ch; }
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);
}
我期望的是,如果我用an2键输入一个字符串,比如:
“wéts”
,我会得到一个输出“uéiy”
,当我破译“uéiy”
时,我会再次得到“wéts”当然,这是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);
}
private char密码(char-ch,int-key)
{
if(char<'A'| | char>'z'|(char>'z'&&char<'A'))
{
返回ch;
}
char d=char.IsUpper(ch)?'A':'A';
返回(char)((ch+key)-d)%26)+d);
}
这看起来像是26个字符(拉丁?)字母表上的模运算——如果接受的字符数超过26个,那么这显然是行不通的。教你的系统了解其他字符。哦,谢谢,这对这个项目很有用,谢谢