【发布时间】:2015-03-12 01:26:44
【问题描述】:
是否有任何库方法或普遍认可的方法来识别双引号内带有引号的标记,同时仍将不带双引号的单引号识别为标记?
例如,字符串:"Bill's Pot" 'Roast' 应导致标记:
Bill's Pot
Roast
【问题讨论】:
-
您可以尝试使用正则表达式,尽管示例字符串没有明显的问题,所以我不明白您的问题是什么?只需捕获两个
"字符之间的每个字符? -
@iharob 抱歉,换行符显示不正确
-
没有一个标准函数可以解释这样的字符串。还有,总是,“你如何将单引号和双引号放入单个标记”的问题?你是使用双引号(所以
""在被双引号包围的字符串中间映射到双引号的单个实例),还是使用另一个转义字符(经典的反斜杠,``)。等等。这样的决定是可以实现的,但是没有专门处理这种解析的 C 标准或 POSIX 标准函数。 -
一次处理输入一个
char,在 4 种状态之一之间移动:空格、单词、“”短语和 '' 短语。 -
如果您在进行手动解析并且
'字符串也应该能够包含"字符,那么您可以只查找任一引号,记住是哪个引号,然后扫描对于相同的引号(例如strchr(),假设字符串以空结尾以使其对格式错误的输入安全)。使用"和'字符串的通用代码很容易。反斜杠转义和不希望字符串中的换行等功能需要更复杂的代码。