虚幻C++中FString的基本用法

构造和赋值操作

FString str1;//empty
FString str2("str");//L"str"
FString str3(3, "str1");//L"str"
FString str4 = TEXT("str");//L"str"
FString str5 = str2;//L"str"

追加,append和AppendChars ,字符串末尾增加另一个字符串

FString strName1 = TEXT("str");
strName1.Append(TEXT("Append1"));//L"strAppend1"
FString strName2 = TEXT("str");
strName2.Append(TEXT("Append1"),3);//L"strApp"
//字符串末尾增加另一个字符串
//FString& FString::operator+=(const FString & Str)
FString strName1 = TEXT("str");
strName1 += TEXT("Append1"));//L"strAppend1"

插入操作

FString strName = TEXT("StrStr");
strName.InsertAt(3, TEXT("Hello"));//L"StrHelloStr"

替换

//字符串替换
FString str = TEXT("Hello World");
FString str1 = str.Replace(TEXT("Hello"),TEXT("New"));//L"New World"
//字符替换
FString str2 = TEXT("Hello World");
str2.ReplaceCharInline(TEXT('l'),TEXT('a'));//L"Heaao Worad"

截断

	FString str = TEXT("Hello World ");
	FString str1 = str.Right(5);
	FString str2 = str.Left(5);

删除

bool RemoveFromStart()从开始删除某个字符串,若删除成功,返回true;
FString strName1 = TEXT("Hello World Hello");
strName1.RemoveFromStart(TEXT("Hello"));//L" World Hello"
bool RemoveFromEnd() 从结尾删除某个字符串,若删除成功,返回true;
FString strName2 = TEXT("Hello World Hello");
strName2.RemoveFromEnd(TEXT("Hello"));//L"Hello World "
void RemoveAt(int32 Index, int32 Count = 1)从指定位置删除自定长度的字节
FString strName3 = TEXT("Hello World Hello");
strName3.RemoveAt(6,5);//L"Hello  Hello"

清空字符串

FString strName3 = TEXT("Hello World Hello");
strName3.Empty();

去掉空格,支持去除开始,末尾及开始和末尾空格

FString str = TEXT(" str1 str2 ");//
FString str1 = str.TrimStart();//L"str1 str2 "
FString str2 = str.TrimEnd();//L" str1 str2"
FString str3 = str.TrimStartAndEnd();//L"str1 str2"
字符串内部
FString str4 = TEXT(" str1 str2 ");
str4.TrimStartInline();//L"str1 str2 "
FString str5 = TEXT(" str1 str2 ");
str5.TrimStartInline();//L"str1 str2"
FString str6 = TEXT(" str1 str2 ");
str6.TrimStartAndEndInline();//L" str1 str2"

字符操作

FString str4 = TEXT("Hello World");
str4[0] = TEXT('W');//L"Wello World"

路径拼接

FString& operator/=( const FString& Str )实现两个字符串的路径连接
FString strCon1 = TEXT("C:/git");
strCon1 /= TEXT("NewFolder");//L"C:/git/NewFolder"
 friend FString operator/(const FString& Lhs, const TCHAR* Rhs)实现两个字符串的实现两个字符串的路径连接
FString strCon2 = FString(TEXT("C:/git")) / TEXT("NewFolder");//L"C:/git/NewFolder"
void PathAppend(const TCHAR* Str, int32 StrLength)路径末尾添加新的路径
FString strCon1 = TEXT("C:/git");
strCon1.PathAppend(TEXT("NewFolder"),3);//L"C:/git/New"
FString  str1 = FString::Printf(TEXT("test %d "),1);

查询字符串数据

查询字符串数据又多种方式,具体如下:

bool FString::StartsWith()

判断一个字符串是否以某个字符串开头。此函数具有两个参数,

第一个参数指定了字符串(const TChar * 或const FString &),

第二个参数指定是否大小写敏感(默认情况下是大小写不敏感)。例如:

FString str = TEXT("hello wolrd");
str.StartsWith(TEXT("hello"));//返回true
str.StartsWith(TEXT("hello1"));//返回false

bool FString::EndsWith(),类似于bool FString::StartsWith(),跳过代码举例

此函数判断一个字符串是否以某个字符串结尾。

bool FString::Contains()判断是否包含某个字符串,第一个参数为需查找的字符串,第二个参数为是否大小写敏感,第三个参数是否从头开始搜索。例如:

FString str = TEXT("hello wolrd");
str.Contains(TEXT("hello"));//返回true
str.Contains(TEXT("hello1"));//返回false

比较

//判断第一个字符串是否小于等于第二个字符串;
bool operator<=(const FString& Lhs, const FString& Rhs) 
//判断第一个字符串是否小于第二个字符串;
bool operator<(const FString& Lhs, const FString& Rhs) 
//判断第一个字符串是否大于等于第二个字符串;
bool operator>=(const FString& Lhs, const FString& Rhs) 
//判断第一个字符串是否大于第二个字符串;
bool operator>(const FString& Lhs, const FString& Rhs) 
//判断两个字符串是否相等;
bool operator==(const FString& Lhs, const FString& Rhs)
//判断两个字符串是否不相等。
bool operator!=(const FString& Lhs, const CharType* Rhs)

查找

int32 FString::Find() 查找字符串,返回字符串开始位置;
bool FString::FindChar( TCHAR InChar, int32& Index ) 查找字符,并返回字符位置;
bool FString::FindLastChar( TCHAR InChar, int32& Index ) 查找追后一个字符,并返回位置信息
int32 FString::FindLastCharByPredicate(Predicate Pred)

转换

  • 转换为FName或者FText
FName sNameFromStr = FName(*sStr);//FString到FName的转换
FText sText = FText::FromString(sStr);//FString到FText的转换
  • 转换为数字类型
FString strFloat = FString::SanitizeFloat(123.4);
FString strInt = FString::FromInt(123);
  • FName或者FText转换为字符串
FName sNameFromStr = FName(*sStr);//FString到FName的转换
FString sStrFromName = sName.ToString();//FName到FString的转换
FText sText = FText::FromString(sStr);//FString到FText的转换
FString sStrFromText = sText.ToString();//FText到FString的转换
  • 数值类型转换为字符串
float f1 = FCString::Atof(TEXT("123.4"));
double d1 = FCString::Atod(TEXT("123.4"));
int i1 = FCString::Atoi(TEXT("123"));
int64 i64 = FCString::Atoi64(TEXT("123"));
bool b1 = FCString::ToBool(TEXT("true"));

大小写转换

FString str = TEXT("Hello");
FString str1 = str.ToLower();//L"hello"
FString str2 = str.ToUpper();//L"HELLO"

FString str = TEXT("Hello");
str.ToLowerInline();
str.ToUpperInline();

其他类型与字符串之间的转换

UE4部分类可以实现与字符串之间的相互转换

	FString FLinearColor::ToString() const
	{
		return FString::Printf(TEXT("(R=%f,G=%f,B=%f,A=%f)"),R,G,B,A);
	}
   	bool InitFromString( const FString& InSourceString )
	{
		R = G = B = 0.f;
		A = 1.f;

		// The initialization is only successful if the R, G, and B values can all be parsed from the string
		const bool bSuccessful = FParse::Value( *InSourceString, TEXT("R=") , R ) && FParse::Value( *InSourceString, TEXT("G="), G ) && FParse::Value( *InSourceString, TEXT("B="), B );
 
		// Alpha is optional, so don't factor in its presence (or lack thereof) in determining initialization success
		FParse::Value( *InSourceString, TEXT("A="), A );
 
		return bSuccessful;
	}  

解决中文乱码问题

FString Str = "你好";//会出现乱码
FString Str = TEXT("你好");//系统通过头文件Platform.h中TEXT宏判断是utf8编码还是unicode编码;
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值