我是水晶报道的新手,对编程知之甚少。我正在寻找一个将音符分开的公式(例如:对于Syd +我们想念你+从Bill& Pat)到3个不同的领域。任何帮助将不胜感激。
答案 0 :(得分:0)
local stringVar subject := 'To Syd+We miss you+From Bill&Pat';
local numberVar location := instr(subject, '+');
if location > 0 then
left(subject, location)
else
subject;
我已经对要修改的字符串进行了硬编码,但您可以将其替换为{table.field}
此外,如果肯定会有+,你可以通过删除if来简化事情。
答案 1 :(得分:0)
注意到李的回答只会给你最左边的文字
instr(subject,“+”)返回最左边的+的位置
左(主题,位置)拉出一个“位置”字符数的主题
如果你想要淘汰第二和第三位,你可以这样做:
local stringvar subject:=“string1 + string2 + string3”;
当地号码位置1;
当地号码位置2;
location1:= instr(subject,“+”);
location2:= instr(location1 + 1,subject,“+”);
/////这个instr只从location1开始查看下一个最左边的+并且我将在下面显示如何使用
(如果location1> 0
然后离开(主题,位置1-1)
/////使用Lee的'left'命令调出第一位,我添加了-1,这样实际的+就不会显示
否则“先丢失+”)
+ chrw(13)+ //我在屏幕上显示这个,所以我添加了一个ENTER,你可以摆脱这一行
(如果location2> 0
/////错误检查迟早会节省成本
然后
(
mid(subject,location1 + 1,location2-1-location1)
/////从主题内拉出一个块,从位置1 + 1开始[越过位置1本身的+],
/////向右抓取'location2-1-location1'字符
/////(用+ 1 / -1玩几次以获得想法。
/////用一个两个字符的分隔符来试试,说“对john12Hello12From jane”,帮助我直截了当
+ chrw(13)+ //再次,这只是为了我的证明
权利(主题,长度(主题) - 位置2)
/////从主题右侧拉出一块,大小'主题长度'减去位置2,
/////所以一切从最后到达那个+
)
否则“错过第二个+”)