【问题标题】:How do I put apostrophes in a string?如何将撇号放在字符串中?
【发布时间】:2013-01-10 14:03:36
【问题描述】:

我有一个宽字符串说 StringABC 我有一个数组说 ArrayABC,这个数组的元素是

ArrayABC[0]='A';
ArrayABC[1]='B';
ArrayABC[2]='C';

现在我必须将stringABC 设为 StringABC := ''A','B','C'';

我正在尝试这样做

StringABC := '';
for (i:=0 to 2) do
begin
StringABC := StringABC + ArrayABC[i] + ',';
if i = 2
stringABC := StringABC + ArrayABC[i];
end

我得到的结果是stringABC = 'A,B,C',但不是''A','B','C'' 我应该在我的代码中改进什么?

【问题讨论】:

    标签: delphi delphi-7 delphi-xe2


    【解决方案1】:
    StringABC := '';
    for (i:=0 to 2) do
    begin
    StringABC := StringABC + '''' + ArrayABC[i] + ''',';
    if i = 2
    stringABC := StringABC + '''' + ArrayABC[i] + '''';
    end
    

    虽然我只是将所有 i 与逗号连接,但最后删除最后一个逗号。

    【讨论】:

    • 你可以用#39#$27代替'''';
    • @Remy 或创建一个命名常量。我没有看到 #-literals 比 4x' 序列更容易阅读或理解 :-)
    【解决方案2】:
    Const
      StringArray:Array[7..11] of String=('A','B','C','D','E');
    
    Function GetQuotedStringArray(const a:Array of String) : String;
    
    var
     i:Integer;
    
     Function GetComma:String;
      begin
        if i <> High(a) then 
         Result :=',' else Result :='';
      end;
    
    begin
      for I := Low(a) to High(a) do 
       Result := Result + QuotedStr(a[i]) + GetComma;
    end;
    
    procedure TForm4.Button1Click(Sender: TObject);
    begin
      Showmessage(GetQuotedStringArray(StringArray));
    end;
    

    【讨论】:

    • 哦,我通常只是无条件地添加分隔符,最后做Result := SetLength(Result, Length(Result) - Length(Separator));
    • @MarjanVenema setlenght 变体在我的代码中也很普遍;-)
    • 对我的眼睛好多了:)
    【解决方案3】:

    另一种选择:

    const
      StringArray:Array[7..11] of String=('A','B','C','D','E');
    
    function GetQuotedStringArray(const a:Array of String): String;
    var
      i: Integer;
      ComStrings: TStringList; 
    begin
      ComStrings := TStringList.Create;
      try
        ComStrings.QuoteChar := '''';
    
        for i := low(a) to high(a) do
          ComStrings.Add(a[i]);
    
        Result := ComStrings.CommaText;
      finally
        ComStrings.Free;
      end;
    end;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-04
      • 2022-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多