String Crystal Reports中的Left()函数未按预期方式工作

String Crystal Reports中的Left()函数未按预期方式工作,string,crystal-reports,String,Crystal Reports,我正在打印的数据库字段在大多数值的末尾有一个冒号。中间也有冒号,所以替换()不会在这里工作。一些示例值为“绿色:”或“味道:辛辣:”或“煮熟” 我的目标是检测并移除末端的结肠 这是我现在的代码: stringvar item_comment := Trim({Recipes.RecipeItem_Comment}); if (right(item_comment,1)= ":") then left(item_comment,Length(item_comment)-1) else i

我正在打印的数据库字段在大多数值的末尾有一个冒号。中间也有冒号,所以替换()不会在这里工作。一些示例值为“绿色:”或“味道:辛辣:”或“煮熟”

我的目标是检测并移除末端的结肠

这是我现在的代码:

stringvar item_comment := Trim({Recipes.RecipeItem_Comment});
if (right(item_comment,1)= ":") then 
    left(item_comment,Length(item_comment)-1)
else item_comment;
我希望在上面的设置中输出“绿色”、“味道:辛辣”和“煮熟”。相反,它输出原始的、未更改的值。如果我将
长度(item_comment)-1
更改为实际的数字值(而不是代码),它会正确修剪并删除冒号。但是,无法以非动态方式知道长度


我错过了什么?为什么left()的行为不符合我的预期?

您是否尝试过在crystal rpeort中使用函数
Split
。。。它将在
处拆分。我觉得您的代码看起来很正确,我刚刚用您的示例案例对其进行了测试,结果与预期的一样。
{Recipes.RecipeItem\u Comment}
是否始终包含格式正确的字符串?您可以尝试将stringvar设置为局部变量,这样它的值就不会在行与行之间保持不变。