Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中从字符串中读取每个字符_C#_String_Compiler Construction - Fatal编程技术网

C# 如何在C中从字符串中读取每个字符

C# 如何在C中从字符串中读取每个字符,c#,string,compiler-construction,C#,String,Compiler Construction,我想做的是编写一个程序,该程序接受文件输入或用户输入的字符串,并逐个字符检查字符串中是否有空格或双引号/单引号,然后将其打断并生成该单词的单独字符串。 我使用Split函数根据给定的分隔符将字符串中的单词分隔开。但我的代码不适用于引文中包含的单词。 实际上,这个任务与编译器构造过程有关 例如: 用户输入:sjhdfnffgfg.'\nff''f' 文字输出应为: sjhdfn//ID fffg//String \n//Character=新行 ff//ID 'f'//Char 有人能用双引号对输

我想做的是编写一个程序,该程序接受文件输入或用户输入的字符串,并逐个字符检查字符串中是否有空格或双引号/单引号,然后将其打断并生成该单词的单独字符串。 我使用Split函数根据给定的分隔符将字符串中的单词分隔开。但我的代码不适用于引文中包含的单词。 实际上,这个任务与编译器构造过程有关

例如:

用户输入:sjhdfnffgfg.'\nff''f'

文字输出应为: sjhdfn//ID

fffg//String

\n//Character=新行

ff//ID

'f'//Char

有人能用双引号对输出的字符串部分进行编码吗?

您可以使用

foreachchar c在s中

或forint i=0;i
但正如我在评论中所说,问题出在别处。当然,如果在分隔符列表中有双引号,S拆开将把你所谓的单词分成两个。

三引用中间没有掩饰的符号。我认为这不是一个有效的语法,如果是,请逐个字符检查,如果空格或双引号/单引号出现在字符串中,则仅打断它是不够的。实际上,这个场景会产生歧义,如果没有额外的规则就无法处理。如果这个任务和编译器构造过程有关,我强烈建议您至少学习一下解析树。解析不复杂的代码并不难,但非常方便。嗨,Zloidooraque,谢谢你的评论。不要担心语法,我只希望输出的形式与我在问题描述中提到的一样。我处于CC的初始阶段,不需要考虑语义错误,只要所需的分词器以字符串形式出现,我就需要打断每个单词。一旦双引号出现在字符串中,就用它打断前面的字符序列并生成一个单词,然后开始一个新单词,包括双引号打开和关闭。不管介于两者之间的是什么,只要打印出来就行了。正如您可能猜到的,只有当双引号本身在引号“”内时,才允许使用奇数个双引号。你有三个d。这是自动错误。对于不属于单词的双引号块之外的引号,单引号编号也必须为偶数。如果可以保证输入字符串始终有效,任务很简单:修剪输入字符串,查看第一个符号是否为d.QUOTE,是否由d.QUOTES拆分,并在拆分中启用保持空子字符串的选项,如果第一个符号为d.QUOTE,则所有奇数项为0,2,4。。结果集合中的所有项都是字符串,如果不是,则所有偶数项都是字符串。在它们中查找\n。用引号拆分剩余的子字符串:使用与d.quotes相同的算法,您将找到字符。用空格分割所有剩余的内容,您就有了IDsI。我已经尝试了这两个循环,但它们没有给出所需的输出。我想在word中添加双引号,因为编译器将其视为字符串。