一.为什么对字符串进行操作
1.因为字符串拥有完备操作函数,虽然是以牺牲一定性能的代价
2.它是基于TArray的类容器类,它的构造让它更容易进行增删查改,且顺序可靠自动维护。不像FName,FText,以键值对这种模式
3.对跨平台,网络传输等等都是字符串,有的传字节流。所以UE自己的FString 字符串功能完备就顺理成章了
二.字符串 与 UE其他数字类型的相互转换
cpp
void AWXStringActor::InitialString()
{
FString TestString = TEXT("This is a Test");
//这下好记住了,FString 很万能
//FSring -> FName
FName TestName = FName(*TestString);
//FString->FText
FText TestText = FText::FromString(TestString);
//FName -> FString
FString BackString = TestName.ToString();
//FText -> FString
FString BackString2 = TestText.ToString();
// Name 可直接 FText ,单Text 却要 经过FString中间商
//
//FName->FText
//FText BackText =FText::FromString(TestName.ToString());饶了不需要
FText BackText2 = FText::FromName(TestName);
// FText-> FName
FName TestName2 = FName(TestText.ToString());
int32 a = 1;
}
三.具体操作
1.查找,添加,替换。
cpp
void AWXStringActor::StringAdd()
{
FString Test1 = TEXT("TEST");
FString Test2 = TEXT("test");
bool bbb = (Test1 == Test2);
bool bbc = Test1.Equals(Test2);
FString Test = FString(TEXT("UnrealEngine5678 This is my test FString Unreal"));
bool u = Test.Contains(TEXT("Unreal"), ESearchCase::CaseSensitive, ESearchDir::FromEnd);
bool u2 = Test.Contains(TEXT("Unreal"), ESearchCase::CaseSensitive, ESearchDir::FromStart);
int32 index1 = Test.Find(TEXT("Unreal"), ESearchCase::CaseSensitive, ESearchDir::FromStart);
int32 index2 = Test.Find(TEXT("Unreal"), ESearchCase::CaseSensitive, ESearchDir::FromStart,5);
FString Str1 = TEXT("123");
FString Str2 = Str1.Append(TEXT("100"));
UE_LOG(LogTemp, Warning, TEXT("%s"), *Str2);
FString Str3 = Str1 + Str2;
UE_LOG(LogTemp, Warning, TEXT("%s"), *Str3);
//UE_LOG(LogAudioMixer, Fatal, TEXT("%s"), *Message);
TCHAR Code = *TEXT("A");
FString Str4 = Str3.AppendChar(Code);
//新的字符
FString ANoterFString = Str4.Replace(TEXT("0"),TEXT("T"));
//原位置替换
int32 ReplaceNum = ANoterFString.ReplaceInline(TEXT("123"),TEXT("1234"));
int a = 0;
}
3.分割
FString | Unreal Engine 5.7 Documentation | Epic Developer Community
Splite

(49 封私信 / 80 条消息) 【UE4】Split() 和ParseIntoArray()函数的用法 - 知乎
