gpt4 book ai didi

c# - 匹配值和国际字符

转载 作者:太空狗 更新时间:2023-10-29 21:54:57 26 4
gpt4 key购买 nike

更新 希望这篇文章对使用 RichTextBoxes 的编码人员有所帮助。匹配对于普通字符串是正确的,我没有看到这个而且我没有看到 richTextBox.Rtf 中的“ä”转换为“\e4r”!所以 Match.Value 是正确的 - 人为错误。

RegEx 找到了正确的文本,但 Match.Value 是错误的,因为它将德语的“ä”替换为“\'e4”!

让 example_text = "Primär-ABC"并使用以下代码

String example_text = "<em>Primär-ABC</em>";
Regex em = new Regex(@"<em>[^<]*</em>" );
Match emMatch = em.Match(example_text); //Works!
Match emMatch = em.Match(richtextBox.RTF); //Fails!
while (emMatch.Success)
{
string matchValue = emMatch.Value;
Foo(matchValue) ...
}

然后 emMatch.Value 返回“Prim\'e4r-ABC”而不是“Primär-ABC”。

德语 ä 转换为\'e4!因为我想使用确切的字符串,所以我需要emMatch.Value 为 Primär-ABC - 我该如何实现?

最佳答案

你在什么情况下这样做?

string example_text = "<em>Ich bin ein Bärliner</em>";
Regex em = new Regex(@"<em>[^<]*</em>" );
Match emMatch = em.Match(example_text);
while (emMatch.Success)
{
Console.WriteLine(emMatch.Value);
emMatch = emMatch.NextMatch();
}

这会输出 <em>Ich bin ein Bärliner</em>在我的控制台中

问题可能不是您返回了错误的 ,而是您得到的是未 显示 em> 正确。这可能取决于很多事情。尝试使用 UTF8 编码将该值写入文本文件,看看它是否仍然不正确。

编辑:对。问题是您正在从 WinForms RichTextBox 获取文本使用 Rtf属性(property)。这不会按原样返回文本,但会返回文本的 RTF 表示形式。 RTF 不是纯文本,它是一种显示 文本的标记格式。如果您打开一个 RTF 文档,例如记事本你会看到里面有很多奇怪的代码——包括\'e4对于您的 RTF 文档中的每个 'ä'。如果您在 RTF 框中使用了一些标记(如粗体文本、颜色等),则 .Rtf property 也会返回该代码,看起来像 {\rtlch\fcs1 \af31507 \ltrch\fcs0 \cf6\insrsid15946317\charrsid15946317 test}

所以使用 .Text属性(property)代替。它将返回实际的纯文本。

关于c# - 匹配值和国际字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11684464/

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