在Delphi中是否有双引号字符串函数?

Ali*_*ter 3 delphi string double-quotes

我知道这个QuotedStr功能,但是有一个类似的功能,例如双引号

for i := 0 to List.count - 1 do
begin
  List[i] := DoubleQuotedStr(List[i]);
end;
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 11

您可以使用AnsiQuotedStr哪个接受引号字符:

List[i] := AnsiQuotedStr(List[i], '"');
Run Code Online (Sandbox Code Playgroud)

文档:

function AnsiQuotedStr(const S: string; Quote: Char): string;
Run Code Online (Sandbox Code Playgroud)

....

使用AnsiQuotedStr将字符串(S)转换为带引号的字符串,使用提供的Quote字符.在S的开头和结尾插入一个引号字符,并且字符串中的每个引号字符都加倍.

  • 这是否正确支持Unicode?它似乎在我的有限测试中工作,但是一个代码点的字节可能被错误地解释为双引号? (2认同)

dav*_*l12 5

在较新的 Delphi 版本中,如果包含System.SysUtils,则可以使用带有参数 的字符串辅助函数TStringHelper.QuotedString'"'

'Test'.QuotedString('"')
Run Code Online (Sandbox Code Playgroud)

这将返回"Test"

我为它做了一个小单元测试:

uses 
  System.SysUtils, DUnitX.TestFramework;

(...)

procedure TStringFunctionsTests.TestWithQuotedString;
var
  TestString: string;
  ExpectedResult: string;
  TestResult: string;
begin
  TestString := 'ABC';
  ExpectedResult := '"ABC"';
  TestResult := TestString.QuotedString('"');
  Assert.AreEqual(TestResult, ExpectedResult);
end;
Run Code Online (Sandbox Code Playgroud)