大家好,我是反邪恶银河帝国的节目作者。现在,我们正准备对死星进行一次大胆的进攻。
我创建了一个庞大的信息数据库,其中包含我们即将袭击死星的 X 翼和 Y 翼战斗机上的飞行员、机器人和系统的信息。由于我们迫切需要快速访问信息,我设计了一个系统,用户可以在其中输入一串文本来指定他们想要检索的数据。
用户可以搜索许多字段。例如,如果用户想查找有关 R2D2 的数据,他可以输入查询“DROID:R2D2”并快速找到该数据。如果他需要红队所有飞行员、机器人和系统的数据,他可以输入“TEAM:RED TEAM”。
但是,该系统旨在处理更复杂的查询。从前面的查询可以看出,数据字段名和数据值是用冒号分隔的:
。用户必须能够搜索每个字段的多个值并一次搜索多个字段。
这是我的高级用户的典型查询:“SHIPTYPE:X-WING,Y-WING; LOCATION:docking bay 94; DROIDTYPE:R2”
我对我处理这件事的方式感到非常满意。我使用String.Split(';')
读取函数来获取用户选择的三个数据字段的值。我使用String.Split(':') to seperate the data field name from the value, and then I user
String.Split(',')` 来获取用户输入多个字段的不同字段值。你可以看到这是如何工作的。
但是,有一个问题。莉亚公主(你知道她有多挑剔)坚持在她的爆破器校准记录中使用“:”、“;”和“,”。当她尝试查询这些数据时,我的程序无法理解她的查询。她说,如果不纠正这个问题,死星很快就会摧毁叛军基地。
因此,我请求您帮助建议解析用户输入的良好做法。我怎样才能让我的程序为 Leiah 公主工作?
更新 我将推测我自己问题的答案。当我学习用 C 风格的语言编程时,我了解了“转义序列”,我可以在其中指定字符串文字中通常保留的字符。(例如,一个 " 字符通常终止一个字符串文字,但我可以使用 \" 来“转义”它)我猜想用我的程序做一些类似的事情是个好主意,但我不知道会成为实现它的最佳方式。在准备这次死星袭击之前,我的大部分编程经验都是使用湿气蒸发器的二进制语言,所以这对我来说是新的。