一个字符串中可能包含数字、汉字和'=',现在为了处理方便,想把其中的按一定规则截取出来
例子如下:
字符串为:期初余额("包含未记帐凭证=是 且 日期=本期 且 科目=1009 其他货币资金 且 科目编码<'1200' 且 科目名称='货币资金' 且 科目类型=负债",)
想截取后的效果为
需截取名称:期初余额
条件需分批截取:例如:1、包含未记帐凭证 2、= 3、是
4、日期 5、= 6、本期
7、科目 8、= 9、1009
……
希望高手多多帮忙,最好有代码,谢谢了
例子如下:
字符串为:期初余额("包含未记帐凭证=是 且 日期=本期 且 科目=1009 其他货币资金 且 科目编码<'1200' 且 科目名称='货币资金' 且 科目类型=负债",)
想截取后的效果为
需截取名称:期初余额
条件需分批截取:例如:1、包含未记帐凭证 2、= 3、是
4、日期 5、= 6、本期
7、科目 8、= 9、1009
……
希望高手多多帮忙,最好有代码,谢谢了
比如 期初余额(
你就要找"(",这是肯定的,
i:= pos(s,'(') ;
s1:= copy(s,i-1,length(s))我一般也就这么做,不知道行不行
包含未记帐凭证=是 且
日期=本期 且
科目=1009 其他货币资金 且
科目编码<'1200' 且
科目名称='货币资金'
且 科目类型=负债")解决方案一:
问题出在你的这个字符串中包含了汉字!只要包含汉字那么就存在处理半个汉字问题。比较麻烦,建议你用英文代替,比如qcye("bhwjzpz='y' and date='benqi' and ...")然后在做个二维数组来映射汉字和英文之间的对应关系即可。解决方案二:
如果实在想用汉字,OK,没关系,问题可能出在你把多个条件都写在同一个行里了,逻辑复杂。了。你需要分行来存储不行了么,用StringList来存储,而不是String。sl:= TStringList.Create();
sl.Add('包含未记帐凭证=是');
sl.Add('日期=本期');
sl.Add('科目=1009 其他货币资金');
sl.Add('科目编码<'1200'');
sl.Add('科目名称='货币资金');
sl.Add('科目类型=负债');处理的时候这么写:
for N:= 0 to sl.Count - 1 do
begin
if Pos('<', sl[N]) <> 0 then
...
else if Pos('=', sl[N]) <> 0 then
...
else
...
end;