“定界符(delimiter)”,“终止符(terminator)”和“分隔符(separator)”这些词语的语义是什么?例如,我认为终止符会出现在每个标记之后,而分隔符则会在每个标记之间。一个定界符与这些中的任何一个相同,还是它们只是定界符的不同形式?
SO将它们三个都作为标签,但它们并不是彼此的同义词。这是因为它们实际上都是不同的吗?
“定界符(delimiter)”,“终止符(terminator)”和“分隔符(separator)”这些词语的语义是什么?例如,我认为终止符会出现在每个标记之后,而分隔符则会在每个标记之间。一个定界符与这些中的任何一个相同,还是它们只是定界符的不同形式?
SO将它们三个都作为标签,但它们并不是彼此的同义词。这是因为它们实际上都是不同的吗?
分隔符表示某物的限制,即其开始和结束的位置。例如:
"this is a string"
这里有两个分隔符,它们都是双引号字符。这些分隔符指示了哪部分属于这个东西,哪部分不属于。
一个分隔符用于区分序列中的两个元素:
one, two
1\t2
code(); // comment
分隔符的作用是将两个不同的实体划分开来,以便它们可以被区分。 (需要注意的是我说“两个”,因为在计算机科学中我们通常在处理线性字符序列)。
终止符表示序列的结束。在CSV中,您可以将换行符视为在一行上终止记录,或者将其视为将一条记录与下一条记录分隔开来。
令牌边界通常由语法类别的变化标记:
foo()
这段内容的翻译如下:
可能会被划分为word(foo)
, lparen
, rparen
这些标记,没有明确的定界符来区分这些标记,但是令牌化器(tokenizer)可以通过字母和标点符号之间的语法类别差异来识别它们。
这些类别并不完全相互独立。例如:
[red, green, blue]
根据你的语法,它可能是由三个项目构成的列表;方括号限定了列表,右括号终止了列表并标记了blue
标记的结尾。
至于SO使用这些术语作为标签,它们只是用来指示问题主题的标签。标签没有一个单一统一的受控词汇表; 任何有足够声望的人都可以添加新的标签。存在足够的术语差异,以至于你永远无法在SO涵盖的所有主题中拥有一个单一受控的标签词汇表。
从技术上讲,定界符用于分隔内容,以便告诉您一个字段何时结束并开始另一个字段,例如逗号分隔值(CSV)文件。
终止符位于某个内容的结尾,用于终止行/输入/任何内容。
分隔符可以是定界符或任何其他分隔内容的符号。例如,在英语单词之间的空格就是分隔符。
您可以认为换行符是行终止符、行的定界符或分隔两行内容的符号。因此,Unicode规范中有几种不同类型的换行符。
分隔符是用于标识某个东西的开始和结束的一个或两个标记。它们是必需的,因为我们不知道那个“东西”会有多长。我们可以使用:
1. 一个单一的分隔符,或者
2. 一对成对的分隔符
[a, b, c, d, e]
每个逗号 (,
) 都是一个单一的分隔符。左右括号 ([
, ]
) 是成对的分隔符。"hello"
,这两个引号符号 ("
) 是成对的分隔符分离器是“分隔符”的同义词,但从我的经验来看,它通常指的是字段分隔符。字段分隔符作为一个字段和其后面的字段之间的分隔符,因此被视为“将它们分开”的方式。
<file1>␜<file2>␜<file3>
,文件分隔符字符 (␜
),尽管名字明确带有“分隔符”,但它既是分隔符,又是分离器终止符标记着一组事物的结尾,同样是因为我们不知道它有多长。
abdefa\0
,这里的空字符 \0
是告诉我们字符串已经结束的终止符。foo\n
,这里的换行符 \n
是告诉我们行已经结束的终止符。术语“分隔符”和“分离器”起源于存储的经典概念,概念上由文件、记录和字段组成 (一个文件有多个记录,每个记录有多个字段)。在这种情况下,单个分隔符和成对的分隔符可能被称为记录分隔符和字段分隔符。由于文件-记录-字段分类法的历史重要性,这些术语具有更广泛的用途(参见维基百科关于分隔符的页面)。
以下是两个文件,每个文件都有三个记录,每个记录有四个字段:
martin,rodgers,33,28000\n
timothy,byrd,22,25000\n
marion,summers,35,37000\n
===
lucille,rowe,28,33000\n
whitney,turner,24,19000\n
fernando,simpson,35,40900\n
在这里,我们知道,
和\n
是单个分隔符,但它们也可以分别被称为记录分隔符和字段分隔符。
对于复杂的嵌套结构,终止符也可以是分隔符/分隔符(它们不是互斥的定义)。从前面的例子中,文件内的===
标记可以被视为终止符(表示文件的结束),但当我们查看许多文件时,===
就像一个分隔符/分隔符。
考虑UNIX文件中的行
This is line 1\n
This is line 2\n
This is line 3\n
换行符既是终止符(它们告诉我们字符串在哪里结束),也是分隔符(它们告诉我们每行的开头和结尾)。来自维基百科:
有两种视角可以看待换行符,都是自洽的:一种是将其视为分隔行的标志,另一种是将其视为行的终止符。
当你只谈到一个单独的项目时(只涉及一个字符串1234\0
、一个行abcd\n
等),你只需要说“终止符”即可——在这种情况下不清楚终止符是否还能作为更复杂父结构中的分隔符。
will smith 1 chris rock 0
终止符是标记单个CSV记录结束的分隔符,通常由换行符(LF
)、回车符(CR
)或两者的组合(例如CRLF
)表示,例如:
will smith 1
chris rock 0
分隔符是标记CSV字段之间分隔的定界符,通常用逗号(或分号)表示,引入它是为了存储动态长度的值,例如在CSV格式下使用两个逗号分隔记录,并在1
和0
之后使用CRLF
终止符:
will,smith,1
chris,rock,0
字段限定符是一种分隔符,通常成对使用而不是转义序列。它是一个可打印字符,不允许在字段值中出现(除非给定的CSV格式规范提供了转义序列),并标记字段的开始和结束。它被引入以存储包含分隔符的值,例如此CSV具有每个记录3个字段的2个记录,但第3个字段值可能包含一个分号,否则会作为字段分隔符:
will;smith;"rich;famous;slaps people"
chris;rock;"rich;famous;gets slapped"
转义序列是一个字符(或一组字符),它标记紧随其后的任何内容为不重要,因此作为字段值的一部分(例如反斜杠可以指定紧随其后的分隔符作为值的一部分)。该序列可以转义一个或多个字符,例如,使用\
作为1个字符转义序列的CSV:
will;smith;rich\;famous\;slaps people 100\\100% of time
chris;rock;rich\;famous\;slaps people 0\\100% of time
delimiter
有几种意义:
^
和$
一样。此外,在人类语言中,还有标点符号(句点、逗号、分号、冒号等),它们也用作单词分隔符(除了空格)。“”
包围(开始和结束)。在这个意义上,它就像“平衡分隔符”(维基百科中的平衡括号)。因此,终止字符也是分隔符,但必须出现在末尾。
Stackoverflow 仅针对分隔符和分离器设置标签
delimiter定界符是用于指定纯文本或其他数据流中独立区域之间边界的一个或多个字符序列。
separator分隔字符串部分的字符。
终止标签仅适用于 shell 终端模拟器:
terminatorTerminator 是一个 GPL 终端模拟器。
而且,是的,分隔符和分离器在很多情况下是等效的,在此已有的答案中,我使用了术语注释器。
注释是文档中使用的所有符号和标记。例如,“TODO列表”文档必须是一行分隔的字符串列表。
符号是用于表示特定含义的标记。例如,“字符串在引号中”是一个符号。
分隔符是用于表示符号的字符或字符集。例如,引号字符是字符串的分隔符。
终止符是结束分隔符,前缀是开始分隔符。对于“TODO列表”文档,引号可以用作前缀和终止分隔符。
分隔符是分隔两个内容的分隔符。例如,“新行”是每个“TODO列表”项目的分隔符。在这个例子中,“新行”也是一个终止符;新行可以用于终止每一行。分隔符也可以是终止符,这是典型的,但不保证总是这样。
分隔符也可以是“定位”的。一个定位分隔的例子是列分隔的主机平面文件。
第一行第一个值,"第一行第二个值",第一行第三个值 第二行第一个值,第二行第二个值,第二行第三个值
"单词1","单词2" \NULL