TStringDynArray 动态数组 字符串 分解 分割 System::DynamicArray<System::UnicodeString>
TByteDynArray, (TIdBytes) String 相互转换 DynamicArray<System::Byte>
TIdBytes = array of Byte;
TByteDynArray;
Delphi type TByteDynArray = array of Byte;
TByteDynArray defines a dynamic array of byte elements. You must use SetLength to allocate storage for such an array.
typedef DynamicArray<Byte> TByteDynArray;
TBytes,就是 typedef System::DynamicArray<System::Byte> TBytes;
TBytes和TByteDynArray 是等价的。
数组
System::DynamicArray<int> array { 1, 2, 3, 4, 5};
DynamicArray<int> aint; aint.Low; aint.High; aint[0];
- arrayOfInt.Length = 10;
int total=0; for (int i=aint.Low; i<=aint.High; i++) total += aint[i]; return total
SplitString 函数
TStringDynArray __fastcall SplitString(UnicodeString S, UnicodeString Delimiters);
和stringList的Delimiter一样,空格也分割了。
TByteArray
TStringDynArray ls;
ls = SplitString("a|b|c","|");
for(int i = 0; i < ls .Length; i++)
ShowMessage(ls [i]);
TStringDynArray sarr;
TStringList *ls = new TStringList();
ls->Text = "a|b|c";
sarr = ls->ToStringArray();
delete ls;
//String <==> TByteDynArray
String str;
str="abc";
TByteDynArray barr;
barr = str.BytesOf();
bytes=System::Sysutils::BytesOf(Caption);
bytes=System::Sysutils::WideBytesOf(Caption);
Caption = System::Sysutils::StringOf(barr);
Caption = System::Sysutils::WideStringOf(barr);
TBytes bytes;
TByteDynArray barr;
String str;
str = Memo1->Text;
barr = str.BytesOf();
bytes = BytesOf(str);
bytes = WideBytesOf(str);
bytes = barr;
ExtractStrings
int __fastcall ExtractStrings(const System::Sysutils::TSysCharSet &Separators, const System::Sysutils::TSysCharSet &WhiteSpace, System::WideChar * Content, TStrings* Strings);
TStringDynArray ar; ar[0]=2; ar[25]=""; ar.set_length(28); ar[0]=2; ar.Length;
用指定的字符串分割,空格可以不分割!
空白传不添加,a,b,,e 中间空的分解就没有了,所以ExtractStrings不合适。
ExtractStrings([';',',',':'],['#',' '],PChar(s),List); //第一个参数是分隔符; 第二个参数是开头被忽略的字符
- TStringDynArray arr;
- arr = System::Ioutils::TDirectory::GetFiles("C:\\Windows");
- this->Memo1->Lines->AddStrings(arr);
TStringDynArray arr; arr = System::Ioutils::TDirectory::GetFiles("C:\\Windows"); this->Memo1->Lines->AddStrings(arr);
- arr = System::Ioutils::TDirectory::GetFiles("c:\\windows","*.ppt", System::Ioutils::TSearchOption::soAllDirectories );
for I := 0 to Length(LList) - 1 do
mmResults.Lines.Add(LList[I]);
Delphi 推荐用这个方法
astr:string;
list: TArray<string>;
list := astr.Split(['|']);
list[0],list[1]...
for i := 0 to High(Editors) do
list[i]
for s in list
showmessage(s);
Split 是 delphi的函数,c++没有。TStringHelper = record helper for string
TStringList好用的特性
ss:TStringList; begin ss.AddPair('p1','aaaaa'); ss.AddPair('p2','bbbbb'); ss.Values['p1']; ss.Values['p2'];
这样的效果
p1=aaaaa
p2=bbbbb
取p1的值aaaa
ss.Values['p1'];
st.Split([','],TStringSplitOptions.ExcludeEmpty);
CommaText甚是方便
TStrings.CommaText
aa
bb
cc
返回值 aa,bb,cc
TStringList分割字符
新属性StrictDelimiter精确分割,空格不在分割换行了。
slsub->StrictDelimiter=true;
slsub->Delimiter = awchar;
slsub->DelimitedText = str;
拼接
list:TStringList;
Result := string.Join('|',List.ToStringArray) ;
a,b,"c,c",d,e,f
如果分解的时候把c,c当做一行