在 StringComparison 和 StringComparer 之间转换的优雅方式?

2023-11-26

一些 .NET 方法使用字符串比较作为参数,有些使用字符串比较器(通常以以下形式比较器)。差异是显而易见的。有没有一些优雅的方式如何获得字符串比较 from 字符串比较器或相反亦然?

我总是可以编写使用的简单方法Case声明,但也许 .NET 中已经存在我所忽略的东西。


StringComparison to StringComparer很简单 - 只需创建一个Dictionary<StringComparison, StringComparer>:

var map = new Dictionary<StringComparison, StringComparer>
{
    { StringComparison.Ordinal, StringComparer.Ordinal },
    // etc
};

有一个StringComparer对于每一个StringComparison价值,所以这种方式很容易运作。提个醒,StringComparer.CurrentCulture取决于当前的线程区域性 - 因此,如果您填充字典,然后修改线程的区域性(或从具有不同区域性的不同线程执行此操作),您最终可能会得到错误的值。您可能想要一个Dictionary<StringComparison, Func<StringComparer>>:

var map = new Dictionary<StringComparison, Func<StringComparer>>
{
    { StringComparison.Ordinal, () => StringComparer.Ordinal },
    // etc
};

然后您可以随时通过调用委托来获取比较器:

var comparer = map[comparison]();

走另一条路是不可行的,因为并非所有StringComparer has一个合适的StringComparison。例如,假设我(在英国)创建了一个StringComparer对于法语(StringComparer.Create(new CultureInfo(..., true)). Which StringComparison这代表吗?对于当前文化、不变文化或序数比较来说,这是不正确的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 StringComparison 和 StringComparer 之间转换的优雅方式? 的相关文章

  • c#.NET 和 sprintf 语法

    这段代码如何翻译成 C 具体来说是如何sprintf用C 实现 string output The user s logged in string loggedIn is string loggedOut isn t if TheUser
  • “你好世界!!”在 .NET 4 中生成 3500 个页面错误

    我正在运行 Windows Vista 和 Visual Studio 2010 使用 NET 4 2 GB RAM 和大约 800 MB 可用空间 我创建了一个 Windows 窗体应用程序 但没有向其中添加任何代码 只需在发布模式下编译
  • 如何等待远程 .NET 调试器连接

    今天我遇到了一个问题 我需要远程调试程序 该程序是从另一个系统启动的 所以我真的没有机会在命令行上与它交互 不过我可以很容易地改变它的来源 我需要做的是让程序正常启动 然后等待我用调试器附加到它 我想不出一个让我快乐的方法 我确实发现了这个
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • VB.NET 中的静态方法实现

    我很困惑Static在 VB NET 中的实现 在 C 中 我们可以创建静态类和静态方法来为我们的应用程序编写实用方法 现在 VB NET 让我们创建Module代替静态类 如果我们在模块中创建一个方法 默认情况下它会变成静态的 但在我的应
  • 在 WPF 中使用 ReactiveUI 提供长时间运行命令反馈的正确方法

    我有一个 C WPF NET 4 5 应用程序 用户将用它来打开某些文件 然后 应用程序将经历很多动作 读取文件 通过许多插件和解析器传递它 这些文件可能相当大 gt 100MB 因此这可能需要一段时间 我想让用户了解 UI 中发生的情况
  • 取消任务

    我尝试运行一个关于取消任务的简单示例 如下所示 CancellationTokenSource tokenSource2 new CancellationTokenSource CancellationToken token2 tokenS
  • 自定义 IQueryable

    我正在尝试自定义应用程序的实体 使它们具有引用加载它们的 DataContext 的属性 我认为最好的方法是以某种方式创建一个实现 IQueryable 的类 并在其 GetEnumerator 方法中设置实体 datacontext 属性
  • Python:删除字符串开头的数字

    我有一些这样的字符串 string1 123 123 This is a string some other numbers string2 1 This is a string some numbers string3 12 3 12 T
  • 在 Azure DevOps 中为 Wix MSI 文件生成 GUID

    我正在为 Web 服务器应用程序和 Sitecore 前端应用程序设置 Wix 安装程序 我的问题并非特定于 Web 服务器或 Sitecore 我的问题是 Wix 以及如何使用它进行持续交付 1 Wix 需要每个文件和产品本身的 GUID
  • 为什么 new String("Hello") 在 C# 中无效?

    制作背后的逻辑 原因是什么 String s new String Hello World 在 C 中非法 错误是 string String char 的最佳重载方法匹配有一些无效参数 我对 API 文档不感兴趣 我感兴趣的是为什么这是非
  • 以编程方式设置 maxRequestLength

    有一个配置值叫做maxRequestLength 在配置文件中 它看起来像这样
  • 如何计算最低系统要求?

    对于我用 Visual C 编写的应用程序 Testing 不 真的 这就是全部
  • 如何替换 pandas 数据框列中的重音符号

    我有一个数据框dataSwiss其中包含瑞士城市的信息 我想用普通字母替换带有重音符号的字母 这就是我正在做的 dataSwiss Municipality dataSwiss Municipality str encode utf 8 d
  • 是否可以在 IIS7 Express 中使用自定义主机标头/绑定?

    我正在尝试配置一个新的ASP NET MVC3 using IIS7快递 在我的本地开发机器上 使用自定义域名 eg 我的本地开发机器 打开我的网络浏览器 goto http dev www mydomain com http dev ww
  • 什么时候值得使用 BindingSource?

    我想我非常了解 BindingSource 类的作用 即在数据源和 UI 控件之间提供一个间接层 它实现了 IBindingList 接口 因此还提供了对排序的支持 而且我已经经常使用它 没有太多问题 但我想知道我使用它的频率是否超过了应有
  • Javascript split 不是一个函数

    嘿朋友们 我正在使用 javascript sdk 通过 jQuery facebook 多朋友选择器在用户朋友墙上发布信息 但是我收到此错误friendId split 不是函数 这是我的代码 function recommendToFr
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • 使用 .htaccess 与 php5.4 内置服务器

    在我的开发环境中 我使用php5 4的web内置Web服务器 但似乎 htaccess无法正常工作 我找不到该服务器的文档 有人可以告诉我是否可以像apache一样使用htaccess和mod rewrite 非常感谢 正如我的评论中提到的
  • 站点匹配查询不存在

    该网站运行良好 直到我在应用程序上单击 注销 之后 该网站会给我这个错误 不存在于 login 站点匹配查询不存在 我到处搜索 得到的唯一解决方案与设置站点框架 SITE ID 等有关 我认为我计算机上的这些项目都很好 但我找不到演练 指南
  • 如何从 Hex NSString 获取十进制 int

    我想从十六进制编码的字符串中获取十进制值 例如 A gt 10 B gt 11 等 我编码如下 NSString tempNumber tempNumber number text NSScanner scanner NSScanner s
  • 如何通过curl发布数组值?

    我喜欢测试一个 API 后端 其设计如下例所示 http localhost 3000 api v1 shops 1 json JSON 响应 id 1 name Supermarket products fruit eggs 这是对应的模
  • 为什么在 JavaScript 中使用 getter 和 setter?

    我知道 JavaScript 中的 getter 和 setter 是如何工作的 我不明白的是 当我们可以使用普通函数得到相同的结果时 为什么我们需要它们 考虑以下代码 var person firstName Jimmy lastName
  • 如何在 django 中集成 Foundation 5

    我想开始在 django 项目中使用 Foundation 5 我的疑问是如何设置 Foundation 项目的文件夹 Foundation 现在使用 Bower 来处理 js 依赖项 我认为将 Foundation 5 设置到 djang
  • 如何在使用较少内存的情况下在单列中存储多个值?

    我有一张桌子users其中 1 列存储用户的 角色 我们可以分配多重角色给特定用户 然后我想将角色 ID 存储在 角色 列中 但是如何才能以易于使用的方式将多个值存储到单个列中以节省内存呢 例如 使用逗号分隔字段进行存储并不容易并且会占用内
  • 这段嵌套 for 循环反复将计数器加倍的代码的复杂性是多少?

    在书里编程面试曝光它说下面的程序的复杂度是 O N 但我不明白这是怎么可能的 有人可以解释这是为什么吗 int var 2 for int i 0 i lt N i for int j i 1 j lt N j 2 var var 你需要一
  • PIL 解码器 jpeg 在 ubuntu x64 上不可用,

    我知道这个问题看起来像是重复的 但我遵循了许多有关如何正确安装 PIL 的在线说明 但没有一个起作用 我已经尝试了一切 Python 图像库失败并显示消息 解码器 JPEG 不可用 PIL没有成功 当我运行 sudo pip install
  • Keras模型训练内存泄漏

    我是 Keras Tensorflow Python 的新手 我正在尝试构建一个供个人使用 未来学习的模型 我刚刚开始使用 python 并想出了这段代码 在视频和教程的帮助下 我的问题是 我的 Python 内存使用量在每个时期甚至在构建
  • 基于 CSV 的 Spark DataFrame 查询是否比基于 Parquet 的 Spark DataFrame 查询更快?

    我必须使用 Spark 从 HDFS 加载 CSV 文件到DataFrame 我想知道由 CSV 文件支持的 DataFrame 与由 parquet 文件支持的 DataFrame 是否有 性能 改进 查询速度 通常 我将如下所示的 CS
  • 使用 Google 进行 WPF 应用程序身份验证

    我发现了许多不同的 OAuth 解决方案以及一些库或纯请求 https github com googlesamples oauth apps for windows 然而 没有一个解决方案看起来像我真正需要的 目前 我的应用程序使用自己的
  • Durandal 2.0 - 用于嵌套菜单的子路由器?

    我正在构建一个应用程序 并希望显示一个 2 层菜单 并且两层始终可用 杜兰达尔2 0介绍了他们的新路由器 它支持 子路由器 可以更轻松地进行深度链接 我的问题 我可以永久加载我的 子 导航路线 并在父级不活动时呈现子菜单 还是 子路由器 设
  • 无空格黑白文本的正则表达式

    请告诉我如何检查正则表达式文本之间没有空格 如果您的意思是 检查字符串中是否有空格的正则表达式是什么 则以下模式将起作用 S 这将找到仅包含非空格 空格 换行符 制表符等 的任何字符串
  • 查找 List 中出现次数最多的数字

    有没有一种快速又好的使用 linq 的方法 怎么样 var most list GroupBy i gt i OrderByDescending grp gt grp Count Select grp gt grp Key First 或者
  • SliverAppBar(Flutter)中的最小高度?

    是否可以在 SliverAppBar 折叠时设置最小高度 如果是 我该怎么做 工作是在 SliverAppBar 中添加一个底部小部件 底部 首选尺寸 首选尺寸 尺寸 20 0 20 0 孩子 文本 这个问题的答案既是肯定的 也是否定的 如
  • 如何从MySQL中的select中删除?

    此代码不适用于 MySQL 5 0 如何重写它以使其工作 DELETE FROM posts where id SELECT id FROM posts GROUP BY id HAVING COUNT id gt 1 我想删除没有唯一 I
  • 嘲笑单例类

    我最近读到 创建一个类单例使得无法模拟该类的对象 这使得测试其客户端变得困难 我无法立即理解根本原因 有人可以解释一下是什么使得无法模拟单例类吗 另外 与创建类单例相关的还有其他问题吗 当然 我可以写类似的东西不要使用单例 它们是邪恶的 使
  • 一项工作中的错误会通过 mclapply 污染其他工作

    When mclapply X FUN 遇到某些值错误X 错误会传播到其他一些 但不是全部 值X require parallel test lt function x if x 3 stop else x mclapply 1 3 tes
  • 在 StringComparison 和 StringComparer 之间转换的优雅方式?

    一些 NET 方法使用字符串比较作为参数 有些使用字符串比较器 通常以以下形式比较器 差异是显而易见的 有没有一些优雅的方式如何获得字符串比较 from 字符串比较器或相反亦然 我总是可以编写使用的简单方法Case声明 但也许 NET 中已