gpt4 book ai didi

C#:用 *single*\替换 single/

转载 作者:太空狗 更新时间:2023-10-30 01:22:35 27 4
gpt4 key购买 nike

我发现很多帖子都在回答类似的问题(例如“如何用 / 替换 \”或“如何替换 \\” by \”。我理解所有这些,但没有一个能解决我的特殊问题。这里是:

我正在从注册表中读取路径字符串,其中包含“///”而不是“\”(易于替换),但也包含“/u00xy"用于 unicode 字符。为了使用正确的 unicode 字符成功解析字符串,我必须将 / 替换为 single \。但是每一种可能的方式(string.replaceregex.replace)都会导致“\\u00xy”而不是“\u00xy“!

或者,我收到类似“Unrecognized escape sequence”的错误。例如:

str.Replace("/u00", @"\u00")   // results in "\\u00"

同时:

str.Replace("/u00", "\u00")    // gives an error.

我没主意了!

最佳答案

我相信这样的事情应该适合你:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Globalization;

namespace Test
{
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine(ConvertUnicodeEscapes("aa/u00C4bb/u00C4cc/u00C4dd/u00C4ee")); // prints aaÄbbÄccÄddÄee
}

private static Regex r = new Regex("/u([0-9A-F]{4})");
private static string ConvertUnicodeEscapes(string input)
{
return r.Replace(input, m => {
int code = int.Parse(m.Groups[1].Value, NumberStyles.HexNumber);
return char.ConvertFromUtf32(code).ToString();
} );
}

}
}

正如 Jon 所指出的,这不仅仅是用单个“\”替换“/”。你不能真的那样做,因为 '\' 是转义字符。首先,我们必须匹配组“/uXXXX”。然后我们将字符串的十六进制部分(XXXX)转换为 utf32(即 unicode)中的整数。最终得到那个utf32编码对应的字符。

关于C#:用 *single*\替换 single/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13236770/

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