c# - 如何安全地拆分字符串?

标签 c# .net-3.5 string

当我们出于任何原因想要拆分 sting 时,我们(至少我自己)倾向于使用(竖线)| 字符进行拆分,因为很难找到某人或那个人应用程序在字符串上使用它......但是如果它使用会发生什么?

好吧,一个简单的Crash将被抛出:)

我发现一所大学使用 non-printable字符来做同样的技术,例如:

String.Format(
         "{1}{0}{2}{0}{3}{0}{4}",
         (char)2,
         myFirstString,
         mySecondString,
         myThirdString,
         myFourthString);

当我们想要将孔串提取到它的部分时

String.Split((char)2);

这安全吗我应该采用这种安全拆分字符串的方式吗? 还有其他安全技术吗?

最佳答案

它可能比管道“更安全”,因为它更罕见,但这两种方式都不是最佳选择,因为它们将您限制在可能字符串的一个子集中。

考虑使用适当的编码——明确任意字符串列表进行编码。就编码而言,最简单的可能是简单地序列化一个 string[]。您可以使用 BinaryFormatterXmlSerializer 或其他东西。

如果结果必须是一个字符串,而且必须是一个字符串,那么您可以尝试这样的操作:

  • 编码:(字符串列表到单个字符串)
    • 将每个字符串中的每个 ! 替换为 !e 并将每个 | 替换为 !p。现在,所有字符串都不包含 |,您可以轻松地反转它。
    • 使用 | 作为分隔符连接字符串。
  • 解码:(单个字符串返回字符串列表)
    • 拆分 | 字符。
    • 将每个字符串中的所有 !p 替换为 | 并将 !e 替换为 !。这将恢复原始字符串。

关于c# - 如何安全地拆分字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3959277/

相关文章:

c# - 将全文搜索与 SQL Server 合并有多难?

python - 比较 2 个整数列表

c# - 为什么在构建SQL命令时使用地址符号@?

c# - 在 WCF 中使用 Unity 将依赖项注入(inject)属性

c# - 我将如何从 GAC 加载程序集?

c# - 用委托(delegate) C# 替换 Func

java - java中为什么会有intern方法?

c# - Visual Studio Application Insights 工具栏不显示事件

c# - Windows 工作流 StateActivity 切换性能

c# - Silverlight MVVM - 按钮启用和可见性属性