String.Split最好的字符是什么?

时间:2012-04-22 06:45:12

标签: c# string

免责声明:我知道在99%的情况下,您不应该在串联字符串中“序列化”数据。

你们在众所周知的情况下使用了什么样的词:

string str = userId +"-"+ userName;

在大多数情况下,我已经回归| (管道)但是,在某些情况下,用户甚至会输入。怎么样的“非典型”字符如☼(ALT + 9999)?

2 个答案:

答案 0 :(得分:6)

这取决于太多因素来给出具体答案。

首先,为什么 你这样做?如果您认为需要以这种方式组合userIduserName,请考虑其他方法,例如CSV样式的引用或类似。

其次,在正常情况下,只应使用不属于字符串一部分的分隔符。如果userId只是一个数字,那么“ - ”就可以了......但如果数字可能是负数呢?

第三,这取决于你打算用字符串做什么。如果它只是用于记录或调试或其他形式的人类消费,那么你可以放松一点,只需选择一个看起来合适的分隔符。如果您计划存储此类数据,请使用分隔符,以确保您可以在以后正确提取数据,无论userIduserName的值如何。如果您可以使用它,请使用\0。如果任一值来自不受信任的源(即Internet),则确保分隔符不能用作任一字符串中的字符。通常,您会限制每个字符包含的字符 - 例如userId的数字以及userName的字母,数字和一些标点字符。

答案 1 :(得分:4)

如果是用于数据存储和检索,则无法保证用户无法找到将分隔符注入字符串的方法。安全的做法是以某种方式预处理输入:

  • -成为特殊字符
  • 如果输入中遇到-,请将其替换为-0
  • 使用--作为分隔符

因此userid = "alpha-dog"userName = "papa--0bear"将被翻译为

alpha-0dog--papa-0-00bear

重要的是,您的方案需要完全撤销,并且无论用户输入什么内容,用户都不应该破坏它。

基本上这是一个非常原始的消毒版本。