gpt4 book ai didi

c# - 如果符号尚未编码,如何对其进行编码?

转载 作者:太空狗 更新时间:2023-10-29 18:12:32 25 4
gpt4 key购买 nike

我需要一个 c# 方法来对符号进行编码,如果它们还没有被编码或者是另一个编码表达式的一部分的话

例如

"tom & jill" should become "tom & jill"


"tom & jill" should remain "tom & jill"


"tom € jill" should remain "tom € jill"


"tom <&> jill" should become "tom <&amp;> jill"


"tom &quot;&&quot; jill" should become "tom &quot;&amp;&quot; jill"

最佳答案

您真正想要做的是,首先解码 字符串,然后再次编码。不要费心尝试修补编码字符串。

任何编码只有在可以轻松解码的情况下才有值(value),因此请重用该逻辑以使您的生活更轻松。而且您的软件更不容易出错。

现在,如果您不确定字符串是否经过编码 - 问题肯定不是字符串本身,而是产生字符串的生态系统。你从哪里弄来的?它在到达你之前经过了谁?你信任它吗?

如果您真的不得不求助于创建一个魔术修复怪异数据函数,那么请考虑构建一个“编码”表及其对应的字符:

&amp; -> &
&euro; -> €
&lt; -> <
// etc.

然后,首先根据表解码所有遇到的编码,然后重新编码整个字符串。当然,在不先解码的情况下摸索时,您可能会获得更有效的方法。但是明年你就不会正常了。这是你的运营商,对吧?你需要保持头脑清醒!如果你想变得太聪明,你会失去理智的。当你发疯时,你会丢掉工作。可悲的事情发生在那些让维护他们的黑客毁掉他们思想的人身上......

编辑:当然,使用 .NET 库会使您免于疯狂:

我刚刚对其进行了测试,解码其中只有 & 符号的字符串似乎没有问题。那么,继续吧:

string magic(string encodedOrNot)
{
var decoded = HttpUtility.HtmlDecode(encodedOrNot);
return HttpUtility.HtmlEncode(decoded);
}

EDIT#2:事实证明,解码器 HttpUtility.HtmlDecode将为您的目的工作,但编码器不会,因为您不希望对尖括号( <> )进行编码。但是编写编码器真的很容易:

define encoder(string decoded):
result is a string-builder
for character in decoded:
if character in encoding-table:
result.append(encoding-table[character])
else:
result.append(character)
return result as string

关于c# - 如果符号尚未编码,如何对其进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7722783/

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