首页 > 解决方案 > 如何在水晶报告中从头到尾移动字符串中的特殊字符

问题描述

在我的程序中,我(经过许多程序)得到了标记化的单词。不幸的是,由于颠倒了它们,它们在单词的开头保留了标点符号,例如。"BARGE "UR 106 How to move that" 从头到尾 -> BARGE "UR 106" 另一个例子:(. REIS (HASAN M应该是 -> REIS (HASAN M.)

到目前为止,我已经尝试过:

    {DOCHS14.SHEM__ONIA} startswith ["\"","\(","\."\,"\(\."]
    then 
    Local StringVar str:={DOCHS14.SHEM__ONIA}[0]
    TrimLeft ({DOCHS14.SHEM__ONIA})
    {DOCHS14.SHEM__ONIA}&str;

但这给了我错误:此处应为数字、货币金额、布尔值、日期、时间、日期时间或字符串。

如何解决?还是有其他方法可以解决这个问题?

标签: stringcrystal-reportsspecial-characters

解决方案


您的公式中有多个问题。

  1. startswith需要一个字符串而不是字符串数组。
  2. 只有双引号必须被转义,但你做错了。(见这里

虽然startswith也可以使用 with 的解决方案,但我使用了Left-function 。在您的第三个示例中,必须检查两个字符,因此必须首先检查并输出另一个结果。

if Left({DOCHS14.SHEM__ONIA}, 2) = "(." Then
    Mid({DOCHS14.SHEM__ONIA}, 3) + ".)"
else if Left({DOCHS14.SHEM__ONIA}, 1) in ["""", "(", ".", ","] Then
    Mid({DOCHS14.SHEM__ONIA}, 2) + Left({DOCHS14.SHEM__ONIA}, 1)
else
    {DOCHS14.SHEM__ONIA}

推荐阅读