在 Power Builder 中尝试用 ~ 符号替换转义字符

In Power Builder trying to replace a escape character with ~ sign

我是 Power Builder 的新手,我正在尝试使用替换功能。我需要用 ~' 替换字符串中的 aposthope(') 但它给我一个错误 "Bad argument list for function: replace" .

Signature = "Gagandeep S'ingh"

Signature = Replace (Signature , "'", "~'")

这里有任何帮助。

来自 PowerBuilder 帮助:

替换 PowerScript 函数

将一个字符串的一部分替换为另一个字符串。

语法:替换 (string1, start, n, string2)

您需要指定要替换的字符数。如果你想插入 string2 到 string1 你使用 0.

所以对于你的例子,你应该尝试这样的事情:

IF POS(Signature, "'") > 0 THEN
  Signature = Replace (Signature, POS(Signature, "'"), 1, "~'")
END IF

这是我当前的代码:

llSigCount = ldsSig.Retrieve(iuQstr.isPtID, iuQstr.ilPtVisitID, iuQstr.ilQstrID, AUTH_EVENT_TYPE)

IF llSigCount > 0 THEN
    lsSignature = ldsSig.GetItemString(1, "cf_name_date")   
IF POS(Signature, "'") > 0 THEN
  Signature = Replace (Signature, POS(Signature, "'"), 1, "~'")
END IF
    dw_edit.Modify("auth_signature_t.Text='" + lsSignature + "'")
END IF

波浪号是 PowerBuilder 中的修饰符。它的第一个功能是表示特殊字符,因此您有 ~r, ~n, ~t 表示回车符 return、换行符和制表符。 第二个函数是一个转义符,它删除了后面字符的任何特殊含义。这允许您编写 "~"" 之类的内容来生成包含引号字符的字符串。在那种情况下,最好写 '"',但如果您已经这样做并且想要单引号,则必须将其转义。为 DataWindow 创建表达式需要额外的转义级别,我不会在这里讨论。当您编写 "~'" 时发生的事情是波浪号告诉 PowerBuilder 将单引号视为普通字符。在这种情况下它无论如何都会这样做,因为它不在单引号字符串中。这就是为什么您要将 ' 替换为另一个 '。如果你想要 ~' 你必须写 "~~'"。第一个波浪号告诉 PowerBuilder 将后面的波浪号视为常规字符,您以 ~' 结尾。 PowerBuilder 帮助将 ~~ 列为波浪号的特殊字符,将 ~'~" 列为引号字符,但是当您使用多于一级的转义时,最好将其视为逃跑并从左到右工作。