105
|
Too embarrassed to say · 技术社区 · 16 年前 |
|
1
65
我会选择“单位分隔符”ASCII码“US”:ASCII 31(0x1F) 在过去,大多数事情都是连续完成的,没有随机访问。这意味着一些控制代码被嵌入到ASCII中。
单位分隔符是ASCII格式的,并且有Unicode支持来显示它(通常是同一字形中的“us”),但许多字体不显示它。 若必须显示它,我建议在将其解析为字段后,在应用程序中显示它。 |
![]() |
2
39
假设由于某种令人尴尬的原因,你不能使用CSV,我会说使用数据。取一些样本数据,对每个值0-127进行简单的字符计数。选择一个没有发生的。如果有太多的选择,那就选择一个更大的数据集。写起来不会花太多时间,你会得到最适合你的答案。 对于不同的问题域,答案会有所不同,因此|(管道)在shell脚本中很常见,^在数学公式中也很常见,对于大多数其他字符来说可能也是如此。 我个人认为,如果可以选择,我会选择|(管道),但使用真实数据是最安全的。 无论你做什么,都要确保你制定了一个逃跑计划! |
![]() |
3
25
使用不同语言时,此符号: 事实证明是最好的。但我仍在测试。 |
![]() |
4
22
也许|、^或~你也可以组合两个字符 |
![]() |
5
17
你说的是“可打印”,但这可能包括制表符(0x09)或换行符(0x0c)等字符。我几乎总是选择制表符而不是逗号来分隔文件,因为逗号有时会出现在文本中。 (有趣的是 ascii table 具有用于组、记录和单位分隔符的字符GS(0x1D)、RS(0x1E)和US(0x1F),无论这些分隔符是什么。)
如果“可打印”是指用户可以识别并轻松键入的字符,我会先选择管道|符号,再加上其他一些奇怪的字符(
|
![]() |
6
16
你使用CSV风格的格式怎么样?字符可以以标准CSV格式转义,并且已经编写了很多解析器。 |
![]() |
7
9
你能用烟斗符号吗?这通常是逗号或制表符分隔字符串之后的第二个最常见的分隔符。大多数文本不太可能包含管道,ord(“|”)为我返回124,因此这似乎符合您的要求。 |
|
8
9
为了快速逃离,我使用了这样的东西: 假设你想连接str1、str2和str3 我所做的是:
然后检索原始用途:
注意:替换顺序很重要 它牢不可破,易于实施 |
![]() |
9
3
为胜利干杯! | |
![]() |
10
3
我们使用ascii 0x7f,它是伪可打印的,在常规使用中很少出现。 |
![]() |
11
2
嗯,这在一定程度上取决于文本的性质,但垂直条0x7C不会经常出现在文本中。 |
![]() |
12
1
我想我从来没有在自然文本中看到过与号后跟逗号,但你可以先检查文件,看看它是否包含分隔符,如果是这样,请使用其他分隔符。如果你想始终知道你使用的分隔符不会导致冲突,那么做一个循环,检查文件中是否有你想要的分隔符,如果存在,则将字符串加倍,直到文件不再匹配。是否有类似的字符串并不重要,因为您的程序只会查找精确的分隔符匹配。 |
![]() |
13
1
这可能是好的或坏的(通常是坏的),具体取决于情况和语言,但请记住,您始终可以对整个内容进行Base64编码。然后,您不必担心在每一侧转义和取消转义各种模式,您可以根据Base64字符集中未使用的字符简单地分离和拆分字符串。 当面临将XML文档放入XML属性/节点时,我不得不求助于这种解决方案。属性中根本不能有CDATA块,作为CDATA转义的节点显然不能在不破坏结构的情况下在其中有更多的CDATA块。 不过,对于大多数情况来说,CSV可能是一个更好的主意。 |
|
14
1
pipe和caret都是显而易见的选择。我要注意的是,如果用户需要键入整个响应,那么在任何键盘上都比在管道上更容易找到插入符号。 |
|
15
0
我以前用过双管和双管。如果您不手动创建或修改文件,则不可打印字符的想法是可行的。为了快速随机访问文件,使用了字段宽度。你甚至不必阅读文件。你实际上是通过引用从文件中提取的。数据库就是这样进行存储的。但它们也管理记录之间的空间等。并介绍了最大数据元素宽度的问题。(索引附加一个标头,用于定义每个元素的宽度及其在旧时代的数据类型。后来,他们引入了使用重映射字符的压缩。这允许文本文件在传输时获得大约1/8的大小。可变长度字符编码用于获胜 |
![]() |
16
0
让它充满活力:) 在文件头中宣布您的控制字符 例如
会给字符串
我实现了类似的东西:
|
![]() |
17
0
我有时需要解析一组充当分隔信息的文件名。或者我在记事本上打一个列表,希望它是可解析的。除非你引用了所有的值,否则逗号不是一个好的选择。
如果可能的话,我也喜欢用键盘打字。Windows不能安装管道(
重音符 可能是最好的选择。我几乎从未见过它,当我看到它时,它被用作撇号,可以提前替换。但它也是Markdown中的一个重要字符,所以用回溯分隔的列表不会很好。我也喜欢不用按住shift键就能打字(至少在美国键盘上)。 波浪号 是一个值得尊敬的第二选择。它也几乎从未被使用过,但在某些类型的“互联网语言”中确实有使用,所以如果你要将正文与潜在用户数据区分开来,你可能想以某种方式避开它。
光标
也值得考虑,尽管它有时也可以用于“网络语言”,特别是在亚洲国家,即。
感叹号 肯定会出现在语法文本中,但值得一提。 如果可以使用两个字符分隔符(或三个),则会有更多的可能性。
使用括号变得可行。例如
使用三个字符分隔符,我喜欢两个空格之间有一个字符。例如,
所以,是的,有很多可行的选择,但没有一个是真正的“标准”的,除非你在标头中明确地存储分隔符。 |