什么是字符串的最佳字符
本文关键字:最佳 字符 字符串 什么 | 更新日期: 2023-09-27 18:31:50
免责声明:我知道在 99% 的情况下,您不应该在串联字符串中"序列化"数据。
你们在众所周知的情况下使用什么字符:
string str = userId +"-"+ userName;
在大多数情况下,我已经退回到|(管道),但在某些情况下,用户甚至会输入。像 (ALT+9999) 这样的☼"非类型"字符呢?
这取决于太多因素无法给出具体的答案。
首先,你为什么要这样做? 如果您觉得需要通过以这种方式组合来存储userId
和userName
,请考虑其他方法,例如.CSV式引用或类似方法。
其次,在正常情况下,只应使用不属于字符串的分隔符。 如果用户 ID 只是一个数字,那么"-"就可以了...但是,如果这个数字可能是负数呢?
第三,这取决于你打算用字符串做什么。 如果它只是用于日志记录或调试器或其他形式的人类消费,那么您可以放松一下,只需选择一个看起来合适的分隔符即可。 如果您打算存储这样的数据,请使用分隔符,以确保以后可以正确提取数据,而不管 userId
或 userName
的值如何。 如果您可以侥幸逃脱,例如使用'0
。 如果任一值来自不受信任的来源(即 Internet),请确保分隔符不能用作任一字符串中的字符。 通常,您会限制每个包含的字符 - 例如,userId
的数字和字母,数字和一些标点符号用于userName
。
如果是用于数据存储和检索,则无法保证用户不会找到将分隔符注入字符串的方法。安全的做法是以某种方式预处理输入:
- 让
-
成为特殊角色 - 如果在输入中遇到
-
,请将其替换为类似-0
的内容。 - 使用
--
作为分隔符
所以userid = "alpha-dog"
和userName = "papa--0bear"
将被翻译成
alpha-0dog--papa-0-00bear
重要的是,你的方案需要完全不可操作,并且用户不应该能够破坏它,无论他们输入什么。
从本质上讲,这是一个非常原始的清理版本。