gpt4 book ai didi

c# - 用打印引号替换直引号 : "My text" to „My text“

转载 作者:太空宇宙 更新时间:2023-11-03 18:28:02 27 4
gpt4 key购买 nike

我想自动将“我的文本”更改为“我的文本”,因为这是用德语写的正确方式。引号可以在文本中的任何位置。

有没有一种简单的方法可以实现这一点?

解决方案应该检查第一个字符,最后一个字符,比如“this”,或者(检查“this”)...

我目前的做法是:

public static string FixGermanQuotationMarks(string input)
{
string output = input;
if (output[0] == '"') output = "„" + output.Substring(1, output.Length - 1);

if (output.EndsWith("\"")) output = output.Substring(0, output.Length-1) + '“';

output = output
.Replace(" \"", " „")
.Replace("(\"", "(„")
.Replace("<\"", "<„")

.Replace("\".", "“.")
.Replace("\")", "“)")
.Replace("\"<", "“<")
.Replace("\" ", "“ ");

return output;
}

但这一点都不优雅。

编辑:

有人问我输入和输出的例子。给你:

"Chili Pasilla" ist mein Lieblings-Chili. Wenn man es richtig sauber entkernt ist es auch gar nicht scharf. Das scharfe an der Chili sind die Kerne und die "Venen".

应该变成:

„Chili Pasilla“ ist mein Lieblings-Chili. Wenn man es richtig sauber entkernt ist es auch gar nicht scharf. Das scharfe an der Chili sind die Kerne und die „Venen“.

最佳答案

我不知道这是否正是您正在寻找的,但这是我将采用的正则表达式解决方案:

    public static string FixGermanQuotationMarks(string input)
{
var pattern = @"""([^""]*)""";
return Regex.Replace(input, pattern, @"„$1“");
}

它可能与必须转义的引号混淆,所以想象一下,如果不是转义引号,实际模式看起来更像这样:"([^"]*)"。好吧,让我们分解一下:

  • " 这与您的开场“常规”报价相符

  • (这个是抓取引号包围的内容,如果你不知道那是什么意思,一会儿你会看到

    <
  • [^"] 这匹配所有不是引号的内容(字母、数字、空格等) ^ 是创建正则表达式时的否定运算符,所以 ^" 表示 *除* "

  • * 这意味着您可以有零个或多个前一个项目,在我们的例子中,它是引号字符以外的任何字符。这是为了确保您捕获的字母与引号之间的字母一样多。

  • )我们关闭捕获组

  • " 这与结束引号匹配

现在,捕获组是什么意思?这只是意味着,在匹配的情况下,我们实际上可以在需要替换原始文本中的匹配内容时重用部分匹配。在我们的例子中,我们感兴趣的只是两个引号之间的内容,这就是我们捕获它的原因。我们可以使用 $1 来引用我们捕获的内容,它引用第一个(在我们的例子中是唯一的)捕获组。然后,我们只需将捕获的文本放在德语引号之间,并使用生成的字符串替换整个匹配项。正如我之前提到的,在查看我发布的代码时看到这么多引号可能会造成混淆,但必须使用它们转义字符串文字。

之后,你只需要像这样调用方法:

var input = @"""Chili Pasilla"" ist mein Lieblings-Chili.";
var germanified = FixGermanQuotationMarks(input);

希望这能阐明正则表达式方法。

关于c# - 用打印引号替换直引号 : "My text" to „My text“,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29503596/

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