题目要求统计一个文本文件中符合特定规则的文本数量。文本以分号(;
)分隔,最后一条可以没有分号,但不能包含空文本。文本可以跨行,支持字符串(单双引号)和转义字符,也允许在字符串外部添加注释(以--
开头)。输入为文本文件,输出为包含的文本数量。例如,给定一段包含SQL命令的文本,程序需计算有效命令的数量并输出。
转义字符处理:在处理字符串时,首先需要去掉转义的双引号和单引号。这样可以确保在后续的成对引号判断中不受到干扰。
去除成对引号内容:通过去除成对的双引号和单引号及其内部内容,可以简化后续对注释和分号的处理。这一步骤确保了注释和文本之间不会互相影响。
有一个文件,包含以一定规则写作的文本,请统计文件中包含的文本数量。
规则如下:
文本以 ";" 分隔,最后一条可以没有 ";" ,但空文本不能算语句,比如
COMMAND A; ;
只能算一条语句。 注意,无字符/空白字符/制表符都算作"空"文本;
文本可以跨行,比如下面,是一条文本,而不是三条
COMMAND A
AND
COMMAND B;
文本支持字符串,字符串为成对的单引号(')或者成对的双引号("),字符串可能出现用转义字符()处理的单双引号("your input is"")和转义字符本身,比如
COMMAND A "Say "hello"";
支持注释,可以出现在字符串之外的任意位置注释以”--“开头,到换行结束,比如
COMMAND A; -- this is comment
COMMAND -- comment
A AND COMMAND B;
注意字符串内的”--“,不是注释。
文本文件
包含的文本数量
输入
COMMAND TABLE IF EXISTS "UNITED STATE";
COMMAND A GREAT (
ID ADSAB,
download\_length INTE-GER, -- test
file\_name TEXT,
guid TEXT,
mime\_type TEXT,
notifica-tionid INTEGER,
original\_file\_name TEXT,
pause\_reason\_type INTEGER,
resumable\_flag INTEGER,
start\_time INTEGER,
state INTEGER,
folder TEXT,
path TEXT,
total\_length INTE-GER,
url TEXT
);
输出
2