gpt4 book ai didi

c# - 如何使用正则表达式 C# 替换空格(unicode 到 utf-8)

转载 作者:行者123 更新时间:2023-12-03 22:56:33 25 4
gpt4 key购买 nike

我正在尝试在 C# 中替换正则表达式。我尝试编写的方法用 UTF-8 中的普通空格替换一些 unicode 字符(空格)。

我用代码来解释一下。我不擅长写正则表达式、文化信息和正则表达式。

    //This method replace white spaces in unicode by whitespaces UTF-8
public static string cleanUnicodeSpaces(string value)
{
//This first pattern works but, remove other special characteres
//For example: mark accents
//string pattern = @"[^\u0000-\u007F]+";
string cleaned = "";
string pattern = @"[^\u0020\u0009\u000D]+"; //Unicode characters
string replacement = ""; //Replace by UTF-8 space
Regex regex = new Regex(pattern);
cleaned = regex.Replace(value, replacement).Trim(); //Trim by quit spaces
return cleaned;
}

Unicode 空格

  • HT:U+0009 = 字符列表
  • LF:U+000A = 换行
  • CR:U+000D = 回车

我做错了什么?

来源

  1. Unicode 字符:https://unicode-table.com/en
  2. 空白:https://en.wikipedia.org/wiki/Whitespace_character
  3. 正则表达式:https://msdn.microsoft.com/es-es/library/system.text.regularexpressions.regex(v=vs.110).aspx

解决方案感谢@wiktor-stribiżew 和@mathias-r-jessen,解决方案:

 string pattern = @"[\u0020\u0009\u000D\u00A0]+";
//I include \u00A0 for replace &nbsp

最佳答案

您的正则表达式 - [^\u0020\u0009\u000D]+ - 是 negated character class匹配除常规空格 (\u0020)、制表符 (\u0009) 和回车符 (\u000D)。您实际上正在寻找一个与您指定的三个字符之一匹配的正字符类(\x0A 表示换行符,\x0D 表示回车符,\x09 表示制表符),问题中带有常规空格 (\x20)。

你可以直接使用

var res = Regex.Replace(s, @"[\x0A\x0D\x09]", " ");

请参阅regex demo

关于c# - 如何使用正则表达式 C# 替换空格(unicode 到 utf-8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46043891/

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