fc2ブログ

凛(kagring)のUE5/UE4とゲーム制作と雑記ブログ

2016 年から UE4 / 2021年から UE5 を触り始めました。勉強したもののメモ用ブログです。ゲーム制作に関するメモや雑記とか色々あります。C++ での Qt、Unity もほんの少しあります。

PREV | PAGE-SELECT | NEXT

≫ EDIT

UE5/UE4 C++で「FString」型の文字列を検索する(FString::Contains、FString::Find、ESearchCase::CaseSensitive、ESearchCase::IgnoreCase、ESearchDir::FromStart、ESearchDir::FromEnd)

C++で「FString」型の文字列を検索する方法です。

公式ドキュメントはこちら。

・FString
https://docs.unrealengine.com/4.27/ja/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/StringHandling/FString/

「FString」型の文字列同士を比較するには「FString::Contains」関数か「FString::Find」関数を使います。
「FString::Contains」関数は純粋に「FString」型の文字列の中に指定した文字列があるかを調べます。
「FString::Find」関数は「FString」型の文字列の中に指定した文字列がある位置を取得できます。

含まれるかどうかの確認だけなら「FString::Contains」を。
含まれる文字列の位置をもとに文字列操作を行いたい場合などは「FString::Find」を使う感じでしょうか。

実際にはこんな感じの記述になります。

・「FString::Contains」

// 検索対象の文字列と検索したい文字列
FString aStringA(TEXT("FString:One:Two"));
FString aStringB(TEXT("ONE"));
// 文字列を検索
bool aResult = aStringA.Contains(aStringB, ESearchCase::CaseSensitive, ESearchDir::FromStart);

一つ目の引数には比較したい文字列を指定します。
二つ目の引数には大文字/小文字を区別するかどうかを指定します。

「ESearchCase::CaseSensitive」を指定すると大文字/小文字を区別して一致するかどうかを調べます。
「ESearchCase::IgnoreCase」を指定すると大文字/小文字を区別せず一致するかどうかを調べます。

三つ目の引数は文字列の前後どちらから検索をするかを指定します。

「ESearchDir::FromStart」を指定すると文字列の先頭から調べます。
「ESearchDir::FromEnd」を指定すると文字列の最後から調べます。


・「FString::Find」

// 検索対象の文字列と検索したい文字列
FString aStringA(TEXT("FString:One:Two"));
FString aStringB(TEXT("ONE"));
// 文字列を検索
int32 aFindIndex = aStringA.Find(aStringB, ESearchCase::IgnoreCase, ESearchDir::FromStart, 0);

一つ目の引数から三つ目の引数までは「FString::Contains」関数と同じになります。
四つ目の引数には開始地点のインデックスを指定することができます。

// 文字列の10番目から検索
int32 aFindIndex = aStringA.Find(aStringB, ESearchCase::IgnoreCase, ESearchDir::FromStart, 10);

文字列操作をする場合は結構多用するような気がします。

これらの文字列系の機能は便利なものも多いので覚えて使っていきたいですね。

| UE5 | 10:00 | comments:0 | trackbacks:0 | TOP↑

COMMENT















非公開コメント

TRACKBACK URL

http://kagring.blog.fc2.com/tb.php/744-49e74b46

TRACKBACK

PREV | PAGE-SELECT | NEXT