好记性不如烂笔头啊,还是记录一下!
这个和C、C++的printf用法一样,先来看一看声明
static FString Printf
(
const TCHAR * Fmt,
...
)
官方有详细介绍,用法如下:
int32 i = 1;
FString Text1 = FString::Printf(TEXT("Text%d"), i);
代码运行后会Text1的值为:
"Text1"
此方法用的函数为FString::Format的TArray版本,声明如下:
static FString Format
(
const TCHAR * InFormatString,
const TArray < FStringFormatArg > & InOrderedArguments
)
说明下参数的作用:
有点难懂,直接看代码和效果会容易理解一些:
int32 i = 1;
TArray FormatArray;
FormatArray.Add(FStringFormatArg(i));
FString Text1 = FString::Format(TEXT("Text{0}"), FormatArray);
代码运行后会Text1的值为:
"Text1"
TArray版本还可以格式化更多的值,会用数组的第0个元素替换{0},用数组的第1个元素替换{1}。
TArray FormatArray;
FormatArray.Add(FStringFormatArg(1));
FormatArray.Add(FStringFormatArg(2));
FString Text1 = FString::Format(TEXT("Text{0}{1}{0}"), FormatArray);
代码运行后会Text1的值为:
"Text121"
此方法用的函数为FString::Format的TMap版本,声明如下:
static FString Format
(
const TCHAR * InFormatString,
const TMap < FString , FStringFormatArg > & InNamedArguments
)
说明下参数的作用:
有点难懂,直接看代码和效果会容易理解一些:
TMap FormatMap;
FormatMap.Add(TEXT("key1"), FStringFormatArg(1));
FString Text1 = FString::Format(TEXT("Text{key1}"), FormatMap);
代码运行后会Text1的值为:
"Text1"
TMap版本也还可以格式化更多的值,会用Map的键值为key1的值替换{key1},用键值为key2的值替换{key2}。
TMap FormatMap;
FormatMap.Add(TEXT("key1"), FStringFormatArg(1));
FormatMap.Add(TEXT("key2"), FStringFormatArg(2));
FString Text1 = FString::Format(TEXT("Text{key1}{key2}{key1}"), FormatMap);
代码运行后会Text1的值为:
"Text121"
Unreal Engine 4 的FString重载了很多操作符,可以很方便的拼接FString:
FString Text1 = TEXT("Text") + FString::FormatAsNumber(1);
代码运行后会Text1的值为:
"Text1"