如何安全地拆分字符串?

bal*_*dre 4 c# string .net-3.5

当我们想要出于任何原因拆分时,我们(至少我自己)倾向于使用(管道)|字符进行拆分,因为找到某人或者应用程序在字符串上使用它是非常罕见的...但是如果它使用会发生什么?

好吧,会抛出一个简单的崩溃 :)

我发现大学使用不可打印的字符来执行相同的技术,例如:

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

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

String.Split((char)2);
Run Code Online (Sandbox Code Playgroud)

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

Tim*_*mwi 8

它可能比管道"更安全",因为它更少,但两种方式都不是最理想的,因为它们将您限制在可能的字符串的子集中.

考虑使用正确的编码 - 一种明确编码任意字符串列表的编码.编码方面最简单的可能就是简单地序列化string[].你可以使用BinaryFormatterXmlSerializer或别的东西.

如果结果必须是一个字符串,并且它必须是一个字符串,那么你可以尝试这样的事情:

  • 编码:(单个字符串的字符串列表)
    • 更换每一个!!e一位|!p每一个字符串.现在,没有一个字符串包含a |,您可以轻松地将其反转.
    • 使用|分隔符连接字符串.
  • 解码:(单个字符串返回字符串列表)
    • 拆分|角色.
    • 全部替换!p|,并!e!每一个字符串.这会恢复原始字符串.