gpt4 book ai didi

c# - 删除不是 ASCII 32 到 175 C# 的字符的更好方法

转载 作者:太空狗 更新时间:2023-10-29 19:49:52 28 4
gpt4 key购买 nike

我需要从字符串中删除不在 32 到 175 之间的 Ascii 范围内的字符,其他任何内容都必须删除。

我不太清楚 RegExp 是否可以成为最好的解决方案,而不是使用 .replace() 或 .remove() 之类的方法来传递每个无效字符或其他东西。

我们将不胜感激。

最佳答案

你可以使用

Regex.Replace(myString, @"[^\x20-\xaf]+", "");

这里的正则表达式由一个字符类([...])组成,该字符类不是(^开头的所有字符)类)在 U+0020 到 U+00AF(32-175,以十六进制表示)的范围内。就正则表达式而言,这是相当基础的,但可能会让不太熟悉它的人感到困惑。

但你也可以走另一条路:

new string(myString.Where(c => (c >= 32) && (c <= 175)).ToArray());

这可能主要取决于您更喜欢阅读什么内容。如果没有太多的正则表达式经验,我会说第二个会更清楚。

一些性能测量,每个 10000 轮,以秒为单位:

2000 characters, the first 143 of which are between 32 and 175
Regex without + 4.1171
Regex with + 0.4091
LINQ, where, new string 0.2176
LINQ, where, string.Join 0.2448
StringBuilder (xanatos) 0.0355
LINQ, horrible (HatSoft) 0.4917
2000 characters, all of which are between 32 and 175
Regex without + 0.4076
Regex with + 0.4099
LINQ, where, new string 0.3419
LINQ, where, string.Join 0.7412
StringBuilder (xanatos) 0.0740
LINQ, horrible (HatSoft) 0.4801

所以是的,我的方法是最慢的 :-)。您可能应该接受 xanatos 的回答,并将其包装在一个名称清晰明了的方法中。对于内联使用或快速而肮脏的事情或性能无关紧要的地方,我可能会使用正则表达式。

关于c# - 删除不是 ASCII 32 到 175 C# 的字符的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11543474/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com