什么是网络用户最不常用的字符?

时间:2009-05-27 22:25:10

标签: statistics

我需要将它用作分隔符,

有谁知道这个统计数据?

7 个答案:

答案 0 :(得分:10)

选择任何字符,然后选择一种机制来转义该字符以处理用户想要键入它的情况。例如,在逗号分隔的文件中,逗号是分隔符:

1,2,fred,john

除非数据本身包含逗号,否则请引用它:

1,2,"Bloggs, Fred",john

如果你需要使用引用:

1,2,"Bloggs, Fred","Jean-Luc \"Make it so\" Picard"

答案 1 :(得分:3)

我认为你使用的角色并不重要,你不应该只希望没有人会输入你的分隔符。使用逗号并处理用户添加自己的逗​​号。

答案 2 :(得分:2)

您可以使用长度来为您在网络上拥有的任何数据添加前缀..这就是HTTP-Chunked编码在网络上发送内容的方式。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html

答案 3 :(得分:2)

您听起来像是在尝试将字符串列表转换为单个字符串,以便稍后可以将其转换回字符串列表。

有几种传统的方法,其中大多数已经在这个帖子中提到过:

  • 使用一个不常见的字符作为分隔符,并且只是通过拒绝包含分隔符的输入,或者通过用“?”替换分隔符,在输入中不允许它要么 ”。”或类似的。为此,我同意建议垂直条的人(|)
    • 优势:用各种语言编写简单的代码
    • 缺点:通过消除包含分隔符的输入的可能性,您将失去一些表现力和未来扩展的机会。
  • 当分隔符出现在输入中时,使用分隔符和转义机制。实际上有一些变种:
    • “就像C代码”方法,您可以在分隔符数据或转义字符的数据中添加转义字符。例如:字符串«Greetings,Hey,Hello\,World,Hello \\ Backslash»包含四个元素,使用,作为分隔符,使用\作为转义字符。 (最后一个元素最初有一个反斜杠)
      • 这实际上是在许多语言中正确编码和实现的王室痛苦
      • 即使你实现它,它通常比其他方法慢得多
    • “like URL parameters”方法,其中您的转义机制是将分隔符转换为不包含分隔符的多字符序列。然后,您还需要将分隔符转换为的任何字符的第一个字符转换为自己的多字符序列。例如,如果您决定使用,作为分隔符,并决定将,表示为«\1»并将\表示为«\2»,可以写下最后一个例子:«Greetings,Hey,Hello\1World,Hello \2 Backslash»
      • 这通常不太难实现。优点是您可以在单独的步骤中执行从字符串到字符串列表的“拆分”和“取消转换”部分。失败的过程可能有点棘手,因为你必须扫描每个字符串。
    • 与CSV文件一样,在包含分隔符的项目周围加引号,并根据某些模糊机制对引号进行转义。 (例如加倍)
      • 避免这种情况,除非您可以将它扔到预先存在的库中。
      • 这具有“Like C code”方法的所有缺点,加上额外的混乱状态,以便在实现时搞砸。
    • 上述方法之一,但具有多字符分隔符。这比你想象的要难;额外的字符实际上使得应该转义的内容的逻辑显着复杂化。
  • 以每个项目的长度作为前缀,然后将项目保持不变
    • HTTP由"Chunked" encodingbencoding(有线格式bittorrent使用)和Google protocol buffers使用。
    • 实现这一点可能有点棘手,并且非常容易出现一个错误。我仍然认为它比“类似C代码”方法更容易实现,特别是在低级语言中。
    • 一旦你正确实现它,它通常比其他方案快得多,即使是仅禁止包含分隔符的输入的有损方案。 (例外情况是,如果您使用的是具有内置“拆分”例程的高级语言)

答案 4 :(得分:1)

如何使用字符串作为分隔符?

答案 5 :(得分:1)

在这种情况下,我喜欢使用竖条|字符。

  • 查看文本文件时很容易发现。
  • 这显然标志着分离。
  • 它很少使用。
  • 并且,由于它在英语语法中没有内在意义,如果它出现在列文本中,很容易就是不允许它或者盲目地将其改为其他东西(如破折号)。

答案 6 :(得分:0)

我确信有很多奇怪的unicode角色没有得到太多的使用,但这可能不是你想要的。

为什么你想要一个“稀有”的分隔符?它将如何使用?