AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [FMX] TStringHelper 2014/06/19
 
前回は、型、文字について記述しましたが、ここではその TStringHelper について少し見ていきます。TStringHelper とは何なのか? ヘルプでは
type TStringHelper = record helper for string;
インデックスがゼロから始まる文字列を扱うための関数やプロパティを提供するレコード ヘルパです。
 ヒント:XE3(およびそれ以前のリリース)の Delphi および
 C++Builder では、文字列のインデックスはデフォルトで
 1 から始まります。
とあり「レコードヘルパ」との事です。それでは「レコードヘルパ」とは?
クラス ヘルパとレコード ヘルパは型の 1 つです。他のクラスやレコードと関連付けると、関連付けられた型(またはその下位クラス)のコンテキストで使用されるメソッドに別の名前を追加したり、プロパティを追加します。ヘルパは、継承を使用せずにクラスを拡張する方法であり、継承がまったく許可されないレコードにとっても便利なものです。ヘルパは、識別子を解決するときに、コンパイラが使用するスコープの範囲を広げる機能です。クラス ヘルパやレコード ヘルパを宣言する場合は、ヘルパの名前と、そのヘルパで拡張する型の名前を記述します。規格上、拡張クラスや拡張レコードを使用できるすべての箇所で、ヘルパを使用できます。このため、コンパイラの解決スコープは、元の型にヘルパを加えたものになります。
 
クラス ヘルパやレコード ヘルパは型を拡張する方法ですが、新規コード開発時に使用する設計ツールとして見なすべきではありません。新規のコードでは常に、通常のクラス継承およびインターフェイス実装を用いるべきです。
というわけで、クラスの継承をしない型の拡張方法の1つ、のようです。見た目は、オブジェクト思考プログラミング(OOP)のような感じもしますが、厳密にはそういう訳でも無さそうですね。
 
それでは TStringHelper について見てみます。
TStringHelper は System.SysUtils 内で定義されています。
 
プロパティから。
Charsproperty Chars[Index: Integer]: Char read GetChars;
この 0 基準の文字列内の個々の文字へアクセスします。Chars プロパティは読み取り専用です。
 var
   I: Integer;
   MyString: String;
 
 begin
   MyString := 'This is a string.';
 
   for I:= 0 to MyString.Length - 1 do
     Write(MyString.Chars[I]);
 end.
出力は以下のとおりです。
This is a string.
 
Lengthproperty Length: Integer read GetLength;
Length を使用すると、0 基準の文字列の長さを取得することができます。
 var
   MyString: String;
 
 begin
   MyString := 'This is a string.';
 
   Writeln(MyString.Length);
 end.
出力は以下のとおりです。
17
 
次にメソッドです。
 
Compare文字列比較
CompareOrdinal(予約)
CompareTo指定文字列との文字列比較
Contains指定文字列を含むかどうか
Copy文字列コピー
CopyTo指定文字列をコピー
Createオブジェクト生成
EndsText指定文字列で終わっているかどうか
EndsWith指定文字列で終わっているかどうか
Equals同一文字列かどうか
Format書式文字列
GetHashCode(予約)
IndexOf指定文字列を含む位置
IndexOfAny指定文字列のいずれかを含む位置
Insert文字列内に指定文字列を挿入
IsDelimiter指定位置の文字が指定文字列内の文字かどうか
IsEmpty空かどうか
IsNullOrEmpty空かどうか
IsNullOrWhiteSpace(予約)
Join文字列結合
LastDelimiter一番右の区切文字位置
LastIndexOf指定文字列を含む一番右の位置
LastIndexOfAny指定文字列のいずれかを含む一番右の位置
PadLeft左側に空白を付加
PadRight右側に空白を付加
Remove文字列内の文字列を削除
Replace文字の置換
Split区切文字での文字列分割
StartsWith指定文字列で始まっているかどうか
Substring部分文字列
ToCharArray文字配列に変換
ToLower小文字に変換
ToLowerInvariant小文字に変換
ToUpper大文字に変換
ToUpperInvariant大文字に変換
Trim前後の空白を除去
TrimEnd最後の指定文字を除去
TrimStart最初の指定文字を除去
 
Compare class function Compare(const StrA: string;
 const StrB: string): Integer;
class function Compare(const StrA: string;
 const StrB: string; IgnoreCase: Boolean): Integer;
class function Compare(
 const StrA: string; IndexA: Integer;
 const StrB: string; IndexB: Integer;
 Length: Integer): Integer;
class function Compare(
 const StrA: string; IndexA: Integer;
 const StrB: string; IndexB: Integer;
 Length: Integer; IgnoreCase: Boolean): Integer;
2 つの 0 基準の文字列が、等しいか比較します。
Compare は static クラス関数
(呼び出し構文はString.Compare(...);)
で、次を返します:
 < 0 --- StrA が StrB より前に分類される場合
 0 --- StrA が StrB と同じ場合
 > 0 --- StrA が StrB の後に分類される場合
 
Compare には 4 つのオーバーロード関数があります:
・第1 Compare オーバーロード メソッドは、StrA を StrB に対して比較する際、大文字小文字を区別します。
・第2 Compare オーバーロード メソッドは、StrA を StrB に対して比較する際、IgnoreCase パラメータを介して大文字小文字の区別をするかどうかを指定することができます。
・第3 Compare オーバーロード メソッドは、StrA を StrB に対して比較する際、文字列のどの位置から比較を開始するか(IndexA 対 IndexB で)、および、そこから何文字分比較するか(Length)を指定することができます。このメソッドは、大文字小文字を区別します。
・第4 Compare オーバーロード メソッドは、StrA を StrB に対して比較する際、文字列のどの位置から比較を開始するか(IndexA 対 IndexB で)、および、そこから何文字分比較するか(Length)を指定することができます。 このメソッドの場合、さらに IgnoreCase パラメータを介して、大文字小文字を区別するか指定することができます。
 
CompareOrdinal class function CompareOrdinal(const strA: string;
 const strB: string): Integer;
class function CompareOrdinal(
 const strA: string; indexA: Integer;
 const strB: string; indexB: Integer;
 length: Integer): Integer;
CompareOrdinal オーバーロード メソッドは、両方とも、現在の実装では -1 を返します。
 
CompareTofunction CompareTo(const strB: string): Integer;
この 0 基準の文字列を、指定された文字列と比較します。
 
CompareTo は、大文字小文字を区別し、次の値を返します:
・< 0 --- この文字列が StrB より前に分類される場合
・0 --- この文字列が StrB と同じ場合
・> 0 --- この文字列が StrB の後に分類される場合
 
Containsfunction Contains(const Value: string): Boolean;
この 0 基準の文字列が、指定された文字列を含んでいるかどうかを返します。
 
Contains は、文字列が Value パラメータで指定された文字列を含んでいる場合には True を、そうでなければ False を返します。
 
Copyclass function Copy(const Str: string): string;
0 基準の指定された文字列を、コピーして返します。
 
Copy は、Str パラメータで指定された 0 基準の文字列をコピーし、それを返します。Copy は、static クラス関数です。
 
CopyTo procedure CopyTo(SourceIndex: Integer;
 var destination: array of Char;
 DestinationIndex: Integer; Count: Integer);
0 基準の文字列内の複数文字列のために確保されたメモリを、別の 0 基準の文字列内の文字群のために確保されたメモリへコピーします。
 
CopyTo 関数は、Move 関数と同様です。
 
Create class function Create(C: Char; Count: Integer): string;
class function Create(const Value: array of Char;
 StartIndex: Integer; Length: Integer): string;
class function Create(const Value: array of Char): string;
オブジェクトを作成し,そのオブジェクトが最初に使用される前にデータを初期化します。
対になる Free は無い様子です。形式的なものとして定義されている様子?
 
EndsText class function EndsText(
 const ASubText, AText: string): Boolean;
指定された 0 基準の文字列が、指定された 0 基準のサブ文字列で終わっているかどうかを返します。
ヒント: EndsText は、大文字小文字を区別しません。
大文字小文字は区別しませんが、半角全角は区別します。
 
EndsWith function EndsWith(const Value: string): Boolean;
function EndsWith(const Value: string;
 IgnoreCase: Boolean): Boolean;
この 0 基準の文字列が、指定されたサブ文字列で終わっているかどうかを返します。
 
EndsWith は、この文字列が、Value で渡された文字列で終わっているかどうかを返す関数です。EndsWith は、第2 オーバーロード関数が使用されている場合には、大文字小文字を区別します。IgnoreCase パラメータで、大文字小文字を区別するかを指定します。
 
Equals function Equals(const Value: string): Boolean;
class function Equals(
 const a: string; const b: string): Boolean;
指定された 2 つの 0 基準の文字列が同一かどうかを返します。
 
Equals は、2 つの 0 基準の文字列が同一かどうかを返す関数です。Equals にはオーバーロード メソッドが 2 つあります。 第 1 メソッドは、この文字列が、Value パラメータで渡された文字列と同じかどうかを返します。第 2 オーバーロード メソッドは static クラス関数で、2 つの渡された文字列間の等価性をチェックするために使用することができます。
 
Format class function Format(const Format: string;
 const args: array of const): string;
Format 関数と同一です。
 
Format はクラス関数で、指定されたパラメータをベースとする、書式付き 0 基準の文字列を返します。
 
GetHashCodefunction GetHashCode: Integer;
現在の実装では -1 を返します。
 
IndexOf function IndexOf(value: Char): Integer;
function IndexOf(const Value: string): Integer;
function IndexOf(Value: Char;
 StartIndex: Integer): Integer;
function IndexOf(const Value: string;
 StartIndex: Integer): Integer;
function IndexOf(Value: Char;
 StartIndex: Integer; Count: Integer): Integer;
function IndexOf(const Value: string;
 StartIndex: Integer; Count: Integer): Integer;
この 0 基準の文字列内で、ある文字またはある文字列が最初に現れる位置を示す整数を返します。
 
StartIndex で、IndexOf メソッドが検索を開始する 0 基準の文字列内でのオフセットを示し、Count で、検索を終了する終端オフセットを指定します。
Pos関数の代わりですね。
 
IndexOfAny function IndexOfAny(
 const AnyOf: array of Char): Integer;
function IndexOfAny(
 const AnyOf: array of Char;
 StartIndex: Integer): Integer;
function IndexOfAny(
 const AnyOf: array of Char;
 StartIndex: Integer; Count: Integer): Integer;
指定された文字が、この 0 基準の文字列内で最初に現れる場所を示す整数を返します。
 
例:
MyString.IndexOfAny(['w', 's', 'a'], 0)
 
Insert function Insert(StartIndex: Integer;
 const Value: string): string;
文字列をこの 0 基準の文字列の指定された位置に挿入します。
 
IsDelimiter function IsDelimiter(const Delimiters: string;
 Index: Integer): Boolean;
この 0 基準の文字列内の指定された文字が、区切り文字セット内のいずれかと一致するかどうかを示します。
 
IsDelimiter は、この 0 基準の文字列内のバイト オフセット Index にある文字が、文字列 Delimiters 内の区切り文字のいずれかに該当するかどうかを判断します。
 
例:
MyString.IsDelimiter(',.; ', 5)
 
IsEmptyfunction IsEmpty: Boolean;
0 基準の文字列が空(文字を含んでいない)かどうかを返します。
 
IsNullOrEmpty class function IsNullOrEmpty(
 const Value: string): Boolean;
static クラス関数で、指定された文字列が空(文字を含んでいない)かどうかを返します。
 
IsNullOrWhiteSpace class function IsNullOrWhiteSpace(
 const Value: string): Boolean;
現在の実装では、常に False を返します。
 
Join class function Join(const Separator: string;
 const values: array of const): string;
class function Join(const Separator: string;
 const Values: array of string): string;
class function Join(const Separator: string;
 const Values: IEnumerable<string>): string;
class function Join(const Separator: string;
 const value: array of string;
 StartIndex: Integer; Count: Integer): string;
指定された Separator で区切られた、2 つ以上の 0 基準の文字列を結合します。
 
例:
String.Join(',', ['String1', 'String2', 'String3']));
String.Join(',', ['String1', 'String2', 'String3'],1,2));
 
System.SysUtils.TStringHelper.Join には 4 つのオーバーロード メソッドがあります。第 1 および第 3 は、現在の実装では常に空文字列('')を返します。他の 2 つのオーバーロード メソッドでは、任意の数の文字列を結合すること、また、配列の指定された開始インデックスの文字列から、終了インデックスの文字列までを、結合することもできます。上記のコード スニペットを参照してください。
 
LastDelimiter function LastDelimiter(
 const Delims: string): Integer;
この 0 基準の文字列内で、Delims 内のいずれかの文字に一致する、もっとも右にある文字のバイト インデックスを返します(ただし null = #0)。
 
LastIndexOf function LastIndexOf(Value: Char): Integer;
function LastIndexOf(const Value: string): Integer;
function LastIndexOf(Value: Char;
 StartIndex: Integer): Integer;
function LastIndexOf(const Value: string;
 StartIndex: Integer): Integer;
function LastIndexOf(Value: Char;
 StartIndex: Integer; Count: Integer): Integer;
function LastIndexOf(const Value: string;
 StartIndex: Integer; Count: Integer): Integer;
現在の 0 基準の文字列内における、Value 文字列の最後のインデックスを返します。
 
StartIndex で、IndexOf メソッドが検索を開始する 0 基準の文字列内でのオフセットを示し、Count で、検索を終了する終端オフセットを指定します。
 
LastIndexOf には 6 つのオーバーロード メソッドがあり、この 0 基準の文字列内のある指定された文字列の最後のインデックスを取得する際に、さまざまなオプションを指定することができます。
IndexOfは最初に見つけた位置を返しますが、これは最後に見つけた位置を返す、という事でしょう。
 
LastIndexOfAny function LastIndexOfAny(
 const AnyOf: array of Char): Integer;
function LastIndexOfAny(
 const AnyOf: array of Char;
 StartIndex: Integer): Integer;
function LastIndexOfAny(
 const AnyOf: array of Char;
 StartIndex: Integer; Count: Integer): Integer;
現在の 0 基準の文字列内における、AnyOf 文字配列のいずれかの最後のインデックスを返します。
 
PadLeft function PadLeft(TotalWidth: Integer): string;
function PadLeft(TotalWidth: Integer;
 PaddingChar: Char): string;
この 0 基準の文字列を、固定長テキスト領域内で右に揃えて配置し、左側を空白で埋めます。
 
例:
MyString2 := '123';
MyString2.PadLeft(5) → 「 123」(半角空白2つ付加)
 
PadRight function PadRight(TotalWidth: Integer): string;
function PadRight(TotalWidth: Integer;
 PaddingChar: Char): string;
この 0 基準の文字列を、固定長テキスト領域内で左に揃えて配置し、右側を空白で埋めます。
 
例:
MyString2 := '123';
MyString2.PadRight(5) → 「123 」(半角空白2つ付加)
 
Remove function Remove(StartIndex: Integer): string;
function Remove(StartIndex: Integer;
 Count: Integer): string;
0 基準の文字列から位置 StartIndex からのサブ文字列を削除します。指定されている場合には、位置 StartIndex + Count までを削除対象とします。
 
Replace function Replace(OldChar: Char; NewChar: Char): string;
function Replace(OldChar: Char; NewChar: Char;
 ReplaceFlags: TReplaceFlags): string;
function Replace(const OldValue: string;
 const NewValue: string): string;
function Replace(const OldValue: string;
 const NewValue: string;
 ReplaceFlags: TReplaceFlags): string;
それまでの文字または文字列を、新しく指定された文字または文字列で置換します。
 
Replace には 4 つのオーバーロード メソッドがあります。最初の 2 つは文字だけを、第 3、第 4 では文字列を置換します。ReplaceFlags パラメータは、rfIgnoreCase や rfReplaceAll などのフラグを使用するために導入されています。
type TReplaceFlags = set of (rfReplaceAll, rfIgnoreCase);
rfReplaceAll
  すべての文字を置換。このフラグが含まれていない場合,対象部分文字列内の最初の文字だけを置換する。
rfIgnoreCase
  部分文字列の比較は,大文字と小文字を区別しないで行う。このフラグが含まれていない場合,部分文字列の一致は大文字と小文字を区別した比較で識別される。
 
Split function Split(const Separator: array of Char)
 : TArray<string>;
function Split(const Separator: array of Char;
 Count: Integer): TArray<string>;
function Split(const Separator: array of Char;
 Options: TStringSplitOptions): TArray<string>;
function Split(const Separator: array of string;
 Options: TStringSplitOptions): TArray<string>;
function Split(const Separator: array of Char;
 Count: Integer;
 Options: TStringSplitOptions): TArray<string>;
function Split(const Separator: array of string;
 Count: Integer;
 Options: TStringSplitOptions): TArray<string>;
この 0 基準の文字列をサブ文字列に、指定された Separator を使用して分けます。
 
Split には 6 つのオーバーロード メソッドがあり、各メソッドでさまざまなオプションを使用できます。
TStringSplitOptions = (None, ExcludeEmpty);
 
StartsWith function StartsWith(const Value: string): Boolean;
function StartsWith(const Value: string;
 IgnoreCase: Boolean): Boolean;
この 0 基準の文字列が指定された文字列で始まっているかどうかを返します。
 
この 0 基準の文字列の開始文字列であるかを確認したい文字列は、Value パラメータで渡します。第 2 オーバーロード StartsWith 関数の IgnoreCase パラメータにより、大文字小文字は区別しないで比較することもできます。
 
Substring function Substring(StartIndex: Integer): string;
function Substring(StartIndex: Integer;
 Length: Integer): string;
0 基準の文字列から、位置 StartIndex から始まるサブ文字列を返します。任意で、終わりの位置 StartIndex + Length を指定することも可能です。
Copy関数の代わりですね。
 
ToCharArray function ToCharArray: TArray<Char>;
function ToCharArray(StartIndex: Integer;
 Length: Integer): TArray<Char>;
この 0 基準の文字列を TArray<Char>(1 文字配列)に変換し、それを返します。
 
ToLowerfunction ToLower: string;
この 0 基準の文字列を、すべて小文字の文字列に変換して、それを返します。
半角文字のみ変換されます。
 
ToLowerInvariantfunction ToLowerInvariant: string;
この 0 基準の文字列を、すべて小文字の文字列に変換して、それを返します。この変換は、Unicode 仕様に従い、UTF-16 文字表現を使用して行われます。
全角文字も変換されます。
 
ToUpperfunction ToUpper: string;
この 0 基準の文字列を、すべて大文字の文字列に変換して、それを返します。
半角文字のみ変換されます。
 
ToUpperInvariantfunction ToUpperInvariant: string;
この 0 基準の文字列を、すべて大文字の文字列に変換して、それを返します。 この変換は、Unicode 仕様に従い、UTF-16 文字表現を使用して行われます。
全角文字も変換されます。
 
Trim function Trim: string;
function Trim(const TrimChars: array of Char): string;
この 0 基準の文字列から、前後の空白を取り除き、文字群を制御します。
 
Trim にはオーバーロード メソッドが 2 つあります。 第 1 メソッドはパラメータを取らず、第 2 メソッドは、どの文字(文字の配列の形式で指定)を、この 0 基準の文字列から取り除くかを指定することができます。
 
TrimEnd function TrimEnd(
 const TrimChars: array of Char): string;
指定された末尾の文字を、この 0 基準の文字列から取り除きます。
 
TrimChars パラメータでは、どの文字(文字の配列の形式で指定)を、この 0 基準の文字列の末尾から取り除くかを指定することができます。
 
TrimStart function TrimStart(
 const TrimChars: array of Char): string;
指定された先頭の文字を、この 0 基準の文字列から取り除きます。
 
TrimChars パラメータでは、どの文字(文字の配列の形式で指定)を、この 0 基準の文字列の先頭から取り除くかを指定することができます。
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Dehi入門編
>Delphi2010
>DelphiXE3
▲2014/06/18
 2014/06/19
▼2014/06/23
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.