水晶报告修剪字符串

时间:2014-01-24 00:32:59

标签: crystal-reports

我是水晶报道的新手,对编程知之甚少。我正在寻找一个将音符分开的公式(例如:对于Syd +我们想念你+从Bill& Pat)到3个不同的领域。任何帮助将不胜感激。

2 个答案:

答案 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,
/////所以一切从最后到达那个+

否则“错过第二个+”)