UE4-字符串
程序员文章站
2022-06-10 23:27:49
...
- UE4-字符串
- Time: 2020年10月15日14:41:24
- Author: Yblackd
UE4-字符串
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