什么是字符串的最佳字符

本文关键字:最佳 字符 字符串 什么 | 更新日期: 2023-09-27 18:31:50

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

你们在众所周知的情况下使用什么字符:

string str = userId +"-"+ userName;

在大多数情况下,我已经退回到|(管道),但在某些情况下,用户甚至会输入。像 (ALT+9999) 这样的☼"非类型"字符呢?

什么是字符串的最佳字符

这取决于太多因素无法给出具体的答案。

首先,你为什么要这样做? 如果您觉得需要通过以这种方式组合来存储userIduserName,请考虑其他方法,例如.CSV式引用或类似方法。

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

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

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

  • -成为特殊角色
  • 如果在输入中遇到-,请将其替换为类似 -0 的内容。
  • 使用 -- 作为分隔符

所以userid = "alpha-dog"userName = "papa--0bear"将被翻译成

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

重要的是,你的方案需要完全不可操作,并且用户不应该能够破坏它,无论他们输入什么。

从本质上讲,这是一个非常原始的清理版本。