0

我有一个 Unicode 字符串,我想限制为 30 个字符。我从查询中填充字符串,所以我不知道开始的长度。我想简单地剪掉所有超过30的字符。我找到了UnicodeString::Delete()方法,但我不知道如何使用它。

我试过这个无济于事:

mystring = <code here to populate the unicode string mystring>
Delete(mystring, 30, 100);
4

1 回答 1

4

您实际上是在尝试调用System::Delete()C++ 不可用的,只有 Delphi 可用。在内部,UnicodeString::Delete()调用System::Delete()使用this作为字符串进行操作。

UnicodeString::Delete()是一个非静态类方法。您需要在字符串对象本身上调用它,而不是作为单独的函数。此外,Delete()是 1-indexed,而不是 0-indexed:

mystring.Delete(31, MaxInt);

如果要使用 0 索引,请UnicodeString::Delete0()改用:

mystring.Delete0(30, MaxInt);

但是,该UnicodeString::SetLength()方法在这种情况下会更合适:

if (mystring.Length() > 30)
    mystring.SetLength(30);

或者,您可以使用UnicodeString::SubString()/ UnicodeString::SubString0()

mystring = mystring.SubString(1, 30);

mystring = mystring.SubString0(0, 30);
于 2018-08-01T03:59:41.493 回答