c# - c# 不能从字符串转换为字符
问题描述
我正在尝试编写一些代码来显示用户给你的密码中存在的任何符号。我很新,正在尝试使用isSymbol
,但我被卡住了。它说不能从字符串转换为字符
using System;
namespace booleanprok
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Enter a made up password:");
string madeUppw = Console.ReadLine();
Console.WriteLine(char.IsSymbol(madeUppw));
}
}
}
解决方案
“我正在尝试编写一些代码来显示用户给你的密码中存在的任何符号。”
鉴于上述陈述,我看到给出的示例代码存在以下问题:
- 您将 a 传递
string
给该IsSymbol()
方法,该方法需要char
. - 您正在从
IsSymbol()
方法(即 abool
)而不是字符本身输出返回值。 IsSymbol()
不会返回我们通常认为是密码中的符号的所有字符(如!
、@
、#
等)。来自文档:“符号是 UnicodeCategory 中以下类别的成员:、、、MathSymbol
和。”CurrencySymbol
ModifierSymbol
OtherSymbol
解决这些问题的一种方法是将任何不是字母或数字的字符视为“符号”,我们可以通过使用 Linq 扩展方法Where()
和char.IsLetter()
andchar.IsDigit()
方法来做到这一点。然后我们可以使用结果将字符输出到控制台string.Join
。
例如:
Console.Write("Enter a made up password: ");
string madeUpPwd = Console.ReadLine();
// Get the distinct characters that aren't Letters or Digits
IEnumerable<char> symbols = madeUpPwd
.Where(c => !char.IsLetter(c) && !char.IsDigit(c))
.Distinct();
// Output them to the console (separated by commas and wrapped in single quotes)
Console.WriteLine($"You entered the symbols: '{string.Join("', '", symbols)}'");
样本输出
(请注意,使用.Where(char.IsSymbol)
只会返回'$'
字符)
推荐阅读
- twitter-bootstrap - 如何更改范围样式标签中的复选框背景颜色?
- python - 在 Python 中根据匹配键值对和比较日期获取记录
- spring - Spring Boot @Autowired 自定义 application.properties
- python - xampp 从连接在同一网络中的不同系统将数据发送到 MySQL db 到本地主机
- sql - 如何从sql server中的join替换OR语句
- android - Flutter 中类似 Container 的背景
- pascal - 带有快捷键 BkSp 的全局 TAction
- c# - 是否可以在 XAML 文件中设置 WPF RenderMode?
- javascript - 如何在json中获取所有日期名称与时间相同?
- python - 在 Python 中使用 ARN iam 将文件上传到 Amazon s3 存储桶