我在我的字符串中获得了Unicode字符的十六进制表示形式,并希望用空字符串替换它.更具体地说,try 使用正则表达式匹配字符串中\u0000-\u007F中的所有值,将其替换为带有C#的空字符串.

Example 1:

InputString:"\u007FTestString"

ExspectedResult:测试字符串

Example 2:

InputString:"\u007FTestString\U0000"

ExspectedResult:测试字符串

我目前的解决方案可以

            if (!string.IsNullOrWhiteSpace(testString))
            {
                return Regex.Replace(testString, @"[^\u0000-\u007F]", string.Empty);
            }

与非ASCII字符的十六进制表示形式不匹配.如何使其与字符串中的\u0000-\u007F匹配?

如有任何帮助,我们不胜感激.谢谢!

推荐答案

您可以使用

var result = Regex.Replace(@"\u007FTestString\U0000", @"\\[uU]00[0-7][0-9A-Fa-f]", "");

要使所有不形成任何字符串转义序列的反斜杠都成为文字字符,则需要@"..."个逐字的字符串文字语法.

Pattern details:

  • \\-反斜杠
  • [uU]-uU
  • 00-两个零
  • [0-7]-从0到7的数字
  • [0-9A-Fa-f]-ASCII十六进制数字字符.

Csharp相关问答推荐

将用户转移到Azure AD B2C中的公司

如何从Date中剥离Timezone部分以仅保留本地Date部分?(no字符串解析或操作)

如何定义所有项目的解决方案版本?

更新数据库中的对象失败,原因是:Microsoft. EntityFrame Core. GbUpdateConcurrencyResponse'

CsWin32如何创建PWSTR的实例,例如GetWindowText

如何在NServicebus中配置学习传输的文件夹(NService bus 8)

具有单一导航属性的EF核心一对多关系

Amazon SP-API确认发货不设置&Quot;递送服务

C#DateTime.ParseExact不使用特定日期

无法将生产环境的AppDbContext设置替换为用于集成测试的内存数据库

等待一个等待函数

如何让两个.NET版本不兼容的项目对话?

在ASP.NET Core 8 MVC中本地化共享视图

在使用UserManager时,如何包含与其他实体的关系?

Content WithTargetPath实际上是有效的MSBuild项吗?

单元测试类型为HttpClient with Microsoft.Extensions.Http.Resilience

工厂类是如何在.NET 8中注册的?

根据优先级整理合同列表

无法使用直接URL通过PictureBox.ImageLocation加载图像

嵌套Blazor组件内的验证