我有以下内容:
string text = "Select [id] AS [FROMId] FROM [TASK] ORDER BY id"
我想使用CCD_ 1来查找FROM的起始位置。
我想找到FROM的位置,而不是FROMId的位置。
LastIndexOf
或FirstIndexOf
不是正确答案,因为文本可能与类似
string text = @"Select [id] AS [FROMId],
newId as [newFROMId] FROM [TASK] ORDER BY [FROMId]"
我需要的索引做精确匹配。
有什么想法吗?
由于FROM
是一个SQL保留字,通常两边都有空格,因此您可以查找它,因为它会在F
之前提供空格的地址,所以添加一个来获得F
本身的位置:
int index = text.IndexOf(" FROM ") + 1
这可能不一定能处理所有边缘情况(a),但要正确地做到这一点,您可能必须实现SQL解析器,以确保您能够正确定位真正的from
关键字,并将其与其他可能性区分开来。
(a)例如:
select [a]FROM[tble] ...
select 'got data from unit #' | unit from tbl ...
等等