- UE4-字符串
- Time: 2020年10月15日14:41:24
- Author: Yblackd
@
目錄
1. FName
2. FText
3. FString
FString是唯一允許操作的字符串類。如:大小寫轉換、截取字符串、逆向等。由於FString是可變的,所以對其進行查找、對比等時開銷比不可變字符串類更大。
3.1 FString-創建
FString TestFString = FString(TEXT("Test String"));
3.2 FString-對比
==
返回true或false,忽略大小寫FString::Equals()
返回true或false,可以傳參ESearchCase的枚舉來確定是否忽略大小寫
TestString == OtherFString;
// 等同於TestString.Equals(OtherFString, ESearchCase::ignoreCase)
TestString.Equals(OtherFString);
// 等同於TestString.Equals(OtherFString, ESearchCase::CaseSensitive)
3.3 FString-搜索
- FString::Contains(),返回true或false,可以傳參ESearchCase(是否忽略大小寫)和ESearchDir(搜索方向),默認參數為忽略大小寫,從前往后搜索。
- 第二種是 FString::Find(),返回找到的第一個子字符串實例的索引,若未找到則返回-1。可以傳參ESearchCase(是否忽略大小寫)、ESearchDir(搜索方向)和開始搜索的位置,默認參數為忽略大小寫,從前往后搜索,從第一個字符開始。
3.4 FString-構建
可通過兩種方法用 字符串 或 其他類型變量來構建FString。
- 用 + 或 += 運算符串聯FString。如:FString TestFString += OtherFString
- FString::Printf,FString TestFString = FString::Printf(TEXT("%02d:%02d"), NumMinutes, NumSeconds)
使用 %s 參數包含 FStrings 時,必須使用 * 運算符返回 %s 參數所需的 TCHAR*。
如:FString::Printf(TEXT(“Test FString:%s”), *OtherFString)
3.5 FString-類型互轉
FString、FName、FText之間互轉
從 | 到 | 范例 |
---|---|---|
FName | FString | TestFString = TestFName.ToString() |
FName | FText | TestFText = FText::FromName(TestFName) PS:FName -> FText 在一些情況下有效,但需注意 FName 內容不會從 FText 的“自動本地化”中受益。 |
FString | FName | TestFName = FName(*TestFString) PS:FString -> FName 不可靠。因為 FName 不區分大小寫,所以轉換存在損耗。 |
FString | FText | TestFText = FText::FromString(*TestFString) PS:FString -> FText 在一些情況下有效,但需注意 — FString 內容不會從 FText 的“自動本地化”中受益。 |
FText | FString | TestFString = TestFText.ToString() PS:FText -> FString 不可靠。它在一些語言的轉換中存在潛在損耗。 |
FText | FName | FText 到 FName 的轉換不存在。但可先轉換到 FString,再轉換到 FName。 PS:FText -> FString -> FName 不可靠。因為 FName 不區分大小寫,所以轉換存在損耗。 |
FString與其他類型互轉
從 | 到 | 范例 | |
---|---|---|---|
float | FString | FString::SanitizeFloat(FloatVariable); | |
int | FString | FString::FromInt(FloatVariable); | |
bool | FString | InBool ?TEXT(“true”) :TEXT(“false”); | ‘true’ or ‘false’ |
FVector | FString | VectorVariable.ToString(); | ‘X= Y= Z=’ |
FVector2D | FString | Vector2DVariable.ToString(); | ‘X= Y=’ |
FRotator | FString | RotatorVariable.ToString(); | ‘P= Y= R=’ |
FLinearColor | FString | LinearColorVariable.ToString(); | ‘(R=,G=,B=,A=)’ |
UObject | FString | (InObj != NULL) ? InObj->GetName() : FString(TEXT(“None”)); | UObject’s FName |
FString | int | FCString::Atoi(*TestFString); | |
FString | float | FCString::Atof(*TestFString); | |
FString | bool | TestFString.ToBool(); | “True”、“Yes”、“GTrue”、“GYes”、非0數字,轉為true;“False”、“No”、“GFalse”、“GNo”、“0”、不可解析的字符串,轉為false。 |
4. 參考
參考鏈接: https://blog.csdn.net/u011476173/article/details/98211552