文章目录
- 虚幻C++ UKismetStringLibrary 函数库解析
-
- 数据类型转换
- 构建字符串
- 其它字符串函数
-
- Append
- Equal | Not Equal (字面用法)
- Len (返回字符串中的字符数)
- Is Empty (如果字符串为空,则返回 true)
- Get Substring (从指定位置开始的字符串返回一个子字符串)
- Find Substring (在指定字符串中查找子字符串的起始索引)
- Contains (返回此字符串是否包含指定的子字符串)
- Get Character As Number (从字符串中获取单个字符)
- Parse Into Array (从由分隔符划分的源字符串中获取字符串数组,并且可以选择剔除空字符串)
- Join String Array (将字符串数组连接成单个字符串)
- Get Character Array From String (返回一个数组,其中包含 SourceString 中每个字符的一个条目)
- ToUpper、ToLower (转换大小写)
- LeftPad、RightPad (在此字符串的左或右侧填充指定数量的字符)
- IsNumeric (检查字符串是否仅包含数字字符)
- StartsWith、EndsWith (测试此字符串是否以给定字符串开头或结尾)
- MatchesWildcard (在此字符串中搜索给定的通配符)
- Trim、TrimTrailing (删除此字符串前面或尾部的空白字符)
- CullArray (接受一个字符串数组并删除任何零长度条目。?????这个节点比较特殊......,事实上不适用于蓝图)
- Reverse (反序)
- Replace (替换此字符串中所有出现的子字符串)
- Replace Inline (用此字符串中的 ReplacementText 替换所有出现的 SearchText)
- Split (在给定的字符串位置拆分此字符串,区分大小写)
- Left、Right (返回最左边或最右边的给定字符数)
- LeftChop、RightChop (从字符串中返回最左边或最右边的字符,从末尾切掉给定数量的字符)
- Mid (从起始位置返回 Count 个字符的子字符串)
- TimeSecondsToString (将秒数转换为分钟)
虚幻C++ UKismetStringLibrary 函数库解析
数据类型转换
- 之前一直很疑惑在使用虚幻的过程中,蓝图中类型转换总是比C++方便很多,蓝图中只要将一个虚幻内置类型一拖就出来,但是使用C++时候往往记住不其转换规则而影响工作效率。
- 因为虚幻蓝图中调用的是UKismetStringLibrary这个函数库,所以使用C++的时候也可以去直接调用,但是会增加一步函数调用,头文件调用,毕竟这个库面向的是蓝图,使用C++的话尽量还是使用对象自己本身的函数操作。
- 虚幻宏标记解析:
- BlueprintPure 此类函数为纯函数
该函数不会以任何方式影响拥有的对象,并且可以在蓝图或关卡蓝图图中执行。
- meta= 元数据标签:
- (DisplayName=“”) 设置蓝图中显示的节点名称。
- (CompactNodeTitle = “->”) 设置成紧凑标题节点。
- (BlueprintAutocast) 在蓝图函数中的静态函数标记为BlueprintPure的前提下使用,将自动为函数的返回类型和第一个参数的类型添加一个强制转换节点。
- Category=“Utilities|String” 在蓝图中使用右键Search时会分类在Utilities的String下,|表示层级划分。
- BlueprintPure 此类函数为纯函数
UFUNCTION(BlueprintPure, meta=(DisplayName = "", CompactNodeTitle = "->", BlueprintAutocast), Category="Utilities|String")
- 目前提供以下虚幻基础类型转换:
original | note |
---|---|
static FString Conv_FloatToString(float InFloat); | Float To String(虚幻5已经弃用,可能默认浮点是双精度) |
static FString Conv_DoubleToString(double InDouble); | Double To String |
static FString Conv_IntToString(int32 InInt); | Int To String |
static FString Conv_Int64ToString(int64 InInt); | Int64 To String |
static FString Conv_ByteToString(uint8 InByte); | Byte To String |
static FString Conv_BoolToString(bool InBool); | Bool To String |
static FString Conv_VectorToString(FVector InVec); | Vector To String |
static FString Conv_Vector3fToString(FVector3f InVec); | Vector3f To String |
static FString Conv_IntVectorToString(FIntVector InIntVec); | IntVector To String |
static FString Conv_IntPointToString(FIntPoint InIntPoint); | IntPoint To String |
static FString Conv_Vector2dToString(FVector2D InVec); | Vector2d To String |
static FString Conv_RotatorToString(FRotator InRot); | Rotator To String |
static FString Conv_TransformToString(const FTransform& InTrans); | Transform To String |
static FString Conv_ObjectToString(class UObject* InObj); | Object To String |
static FString Conv_ColorToString(FLinearColor InColor); | Color To String |
static FString Conv_NameToString(FName InName); | Name To String |
static FString Conv_MatrixToString(const FMatrix& InMatrix); | Matrix To String |
static FName Conv_StringToName(const FString& InString); | String To Name |
static int32 Conv_StringToInt(const FString& InString); | String To Int |
static float Conv_StringToFloat(const FString& InString); | String To Float(虚幻5已经弃用,可能默认浮点是双精度) |
static double Conv_StringToDouble(const FString& InString); | String To Double |
static void Conv_StringToVector(const FString& InString, FVector& OutConvertedVector, bool& OutIsValid); | String To Vector |
static void Conv_StringToVector3f(const FString& InString, FVector3f& OutConvertedVector, bool& OutIsValid); | String To Vector3f |
static void Conv_StringToVector2D(const FString& InString, FVector2D& OutConvertedVector2D, bool& OutIsValid); | String To Vector2D |
static void Conv_StringToRotator(const FString& InString, FRotator& OutConvertedRotator, bool& OutIsValid); | String To Rotator |
static void Conv_StringToColor(const FString& InString, FLinearColor& OutConvertedColor, bool& OutIsValid); | String To Color |
构建字符串
- 转换一个非string的内置数值类型到string,以AppendTo+Prefix+InFloat+Suffix的形式创建。
- AppendTo - 用作转换字符串开头的现有字符串。
- Prefix - 在 AppendTo 字符串之后用作前缀的字符串。
- InFloat - 要转换的浮点值。
- Suffix - 附加到转换字符串末尾的后缀。
original | note |
---|---|
static FString BuildString_Float(const FString& AppendTo, const FString& Prefix, float InFloat, const FString& Suffix); | Build String To Float(虚幻5已经弃用,可能默认浮点是双精度) |
static FString BuildString_Double(const FString& AppendTo, const FString& Prefix, double InDouble, const FString& Suffix); | Build String To Double |
static FString BuildString_Int(const FString& AppendTo, const FString& Prefix, int32 InInt, const FString& Suffix); | Build String To Int |
static FString BuildString_Bool(const FString& AppendTo, const FString& Prefix, bool InBool, const FString& Suffix); | Build String To Bool |
static FString BuildString_Vector(const FString& AppendTo, const FString& Prefix, FVector InVector, const FString& Suffix); | Build String To Vector |
static FString BuildString_IntVector(const FString& AppendTo, const FString& Prefix, FIntVector InIntVector, const FString& Suffix); | Build String To IntVector |
static FString BuildString_Vector2d(const FString& AppendTo, const FString& Prefix, FVector2D InVector2d, const FString& Suffix); | Build String To Vector2d |
static FString BuildString_Object(const FString& AppendTo, const FString& Prefix, class UObject* InObj, const FString& Suffix); | Build String To Object |
static FString BuildString_Color(const FString& AppendTo, const FString& Prefix, FLinearColor InColor, const FString& Suffix); | Build String To Color |
static FString BuildString_Name(const FString& AppendTo, const FString& Prefix, FName InName, const FString& Suffix); | Build String To Name |
其它字符串函数
- 下面的函数分批分析
======================================================================================================
Append
- 用法:常用的将多个字符串合并成一个的函数。
- 虚幻宏标记解析:
- **(CommutativeAssociativeBinaryOperator = “true”)**元数据标签:此节点缺少引脚命名,但拥有一个创建额外输入引脚的添加引脚(Add Pin) 按钮。
UFUNCTION(BlueprintPure, meta=(DisplayName = "Append", CommutativeAssociativeBinaryOperator = "true"), Category="Utilities|String")
static FString Concat_StrStr(const FString& A, const FString& B);
======================================================================================================
Equal | Not Equal (字面用法)
- 四个函数:完全相同(===)、忽略大小写相同(==)、完全不相同(!==)、忽略大小写不相同(!=)。
UFUNCTION(BlueprintPure, meta=(DisplayName = "Equal Exactly (String)", CompactNodeTitle = "==="), Category="Utilities|String")
static bool EqualEqual_StrStr(const FString& A, const FString& B);
UFUNCTION(BlueprintPure, meta=(DisplayName = "Equal, Case Insensitive (String)", CompactNodeTitle = "=="), Category="Utilities|String")
static bool EqualEqual_StriStri(const FString& A, const FString& B);
UFUNCTION(BlueprintPure, meta=(DisplayName = "Not Equal Exactly (String)", CompactNodeTitle = "!=="), Category="Utilities|String")
static bool NotEqual_StrStr(const FString& A, const FString& B);
UFUNCTION(BlueprintPure, meta=(DisplayName = "Not Equal, Case Insenstive (String)", CompactNodeTitle = "!="), Category="Utilities|String")
static bool NotEqual_StriStri(const FString& A, const FString& B);
======================================================================================================
Len (返回字符串中的字符数)
- 参数:
- S - 源字符串。
- 返回值:字符串中的字符数。
UFUNCTION(BlueprintPure, Category="Utilities|String", meta=(CompactNodeTitle = "LEN", Keywords = "length"))
static int32 Len(const FString& S);
======================================================================================================
Is Empty (如果字符串为空,则返回 true)
- 参数:
- InString - 源字符串。
- 返回值:字符串是否为空。是空就是true,不是就是false。
UFUNCTION(BlueprintPure, Category="Utilities|String", meta=(Keywords = "empty"))
static bool IsEmpty(const FString& InString);
======================================================================================================
Get Substring (从指定位置开始的字符串返回一个子字符串)
- 参数:
- SourceString - 源字符串。
- StartIndex - 源字符串中用作子字符串开始的位置。
- Length - 请求子串的长度。
- 返回值:请求的子字符串。
UFUNCTION(BlueprintPure, Category="Utilities|String")
static FString GetSubstring(const FString& SourceString, int32 StartIndex = 0, int32 Length = 1);
======================================================================================================
Find Substring (在指定字符串中查找子字符串的起始索引)
- 参数:
- SearchIn - 要在其中搜索的字符串。
- Substring - 在搜索的字符串中查找的字符串。
- bUseCase - 是否区分大小写。
- bSearchFromEnd - 是否从字符串末尾而不是开头开始搜索。
- StartPosition - 开始搜索的位置。
- 返回值:子字符串第一次出现的索引(如果 bSearchFromEnd 为 false ,则从 0 开始)。
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static int32 FindSubstring(const FString& SearchIn, const FString& Substring, bool bUseCase = false, bool bSearchFromEnd = false, int32 StartPosition = -1);
======================================================================================================
Contains (返回此字符串是否包含指定的子字符串)
- 参数:
- SearchIn - 要在其中搜索的字符串。
- Substring - 要在其中搜索的字符串。
- bUseCase - 是否区分大小写。
- bSearchFromEnd - 是否从字符串末尾而不是开头开始搜索。
- 返回值:返回字符串是否包含子字符串
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static bool Contains(const FString& SearchIn, const FString& Substring, bool bUseCase = false, bool bSearchFromEnd = false);
======================================================================================================
Get Character As Number (从字符串中获取单个字符)
- 参数:
- SourceString - 源字符串。
- Index - 需要其值的字符的位置。
- 返回值:字符的整数值,如果索引超出范围,则为 0。
UFUNCTION(BlueprintPure, Category="Utilities|String")
static int32 GetCharacterAsNumber(const FString& SourceString, int32 Index = 0);
======================================================================================================
Parse Into Array (从由分隔符划分的源字符串中获取字符串数组,并且可以选择剔除空字符串)
- 参数:
- SourceString - 源字符串。
- Delimiter - 使用这个字符串来分隔。
- CullEmptyStrings - 是否剔除空字符串。
- 返回值:已分离的字符串数组
UFUNCTION(BlueprintPure, Category="Utilities|String")
static TArray<FString> ParseIntoArray(const FString& SourceString, const FString& Delimiter = FString(TEXT(" ")), const bool CullEmptyStrings = true);
======================================================================================================
Join String Array (将字符串数组连接成单个字符串)
- 参数:
- SourceArray - 要连接的字符串数组。
- Separator - 用于分隔每个元素的字符串。
- 返回值:最终连接的字符串。
UFUNCTION(BlueprintPure, Category="Utilities|String")
static FString JoinStringArray(const TArray<FString>& SourceArray, const FString& Separator = FString(TEXT(" ")));
======================================================================================================
Get Character Array From String (返回一个数组,其中包含 SourceString 中每个字符的一个条目)
- 参数:
- SourceArray - 要拆分为字符的字符串。
- 返回值:一个数组,包含 SourceString 中每个字符的一个条目。
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static TArray<FString> GetCharacterArrayFromString(const FString& SourceString);
======================================================================================================
ToUpper、ToLower (转换大小写)
- 参数:
- SourceArray - 要转换的字符串。
- 返回值:转换成后大小写的字符串。
UFUNCTION(BlueprintPure, Category="Utilities|String")
static FString ToUpper(const FString& SourceString);
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static FString ToLower(const FString& SourceString);
======================================================================================================
LeftPad、RightPad (在此字符串的左或右侧填充指定数量的字符)
- 参数:
- SourceArray - 要填充的字符串。
- 返回值:填充的字符串。
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static FString LeftPad(const FString& SourceString, int32 ChCount);
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static FString RightPad(const FString& SourceString, int32 ChCount);
======================================================================================================
IsNumeric (检查字符串是否仅包含数字字符)
- 参数:
- SourceArray - 要检查的字符串。
- 返回值:如果字符串只包含数字字符返回ture。
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static bool IsNumeric(const FString& SourceString);
======================================================================================================
StartsWith、EndsWith (测试此字符串是否以给定字符串开头或结尾)
- 参数:
- SourceString - 要检查的字符串。
- InPrefix | InSuffix - 检查前缀 | 检查后缀。
- SearchCase - 指示搜索是否区分大小写(默认为 ESearchCase::IgnoreCase )
- 返回值:如果此字符串以指定文本开头或结尾,则为 true,否则为 false。
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static bool StartsWith(const FString& SourceString, const FString& InPrefix, ESearchCase::Type SearchCase = ESearchCase::IgnoreCase);
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static bool EndsWith(const FString& SourceString, const FString& InSuffix, ESearchCase::Type SearchCase = ESearchCase::IgnoreCase);
======================================================================================================
MatchesWildcard (在此字符串中搜索给定的通配符)
- 参数:
- SourceString - 源字符串。
- Wildcard - *? 型通配符。
- SearchCase - 指示搜索是否区分大小写(默认为 ESearchCase::IgnoreCase )
- 返回值:如果此字符串与给定的 *? 型通配符匹配,则为 true。
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static bool MatchesWildcard(const FString& SourceString, const FString& Wildcard, ESearchCase::Type SearchCase = ESearchCase::IgnoreCase);
======================================================================================================
Trim、TrimTrailing (删除此字符串前面或尾部的空白字符)
- 参数:
- SourceString - 源字符串。
- 返回值:删除前面或尾部空白字符的字符串。
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static FString Trim(const FString& SourceString);
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static FString TrimTrailing(const FString& SourceString);
======================================================================================================
CullArray (接受一个字符串数组并删除任何零长度条目。???这个节点比较特殊…,事实上不适用于蓝图)
- 参数:
- SourceString - 源字符串。
- InArray - 要剔除的数组。
- 返回值:InArray 中剩余的元素数。
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static int32 CullArray(const FString& SourceString, TArray<FString>& InArray);
======================================================================================================
Reverse (反序)
- 参数:
- SourceString - 源字符串。
- 返回值:此字符串的副本,其中字符顺序相反。
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static FString Reverse(const FString& SourceString);
======================================================================================================
Replace (替换此字符串中所有出现的子字符串)
- 参数:
- SourceString - 源字符串。
- From - 从子字符串替换到。
- To - 要替换 From 的子字符串。
- SearchCase - 指示搜索是否区分大小写(默认为 ESearchCase::IgnoreCase )。
- 返回值:此字符串的副本,并进行了替换。
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static FString Replace(const FString& SourceString, const FString& From, const FString& To, ESearchCase::Type SearchCase = ESearchCase::IgnoreCase);
======================================================================================================
Replace Inline (用此字符串中的 ReplacementText 替换所有出现的 SearchText)
- 参数:
- SourceString - 源字符串。
- SearchText - 应从此字符串中删除的文本。
- ReplacementText - 要插入其位置的文本。
- SearchCase - 指示搜索是否区分大小写(默认为 ESearchCase::IgnoreCase )。
- 返回值:被替换的 SearchText 出现次数。
UFUNCTION(BlueprintCallable, Category = "Utilities|String")
static int32 ReplaceInline(UPARAM(ref) FString& SourceString, const FString& SearchText, const FString& ReplacementText, ESearchCase::Type SearchCase = ESearchCase::IgnoreCase);
======================================================================================================
Split (在给定的字符串位置拆分此字符串,区分大小写)
- 参数:
- SourceString - 源字符串。
- InStr - 要搜索和拆分的字符串。
- LeftS - 输出 InStr 左侧的字符串,如果 return 为 false,则不更新。
- RightS - 输出 InStr 右侧的字符串,如果 return 为 false,则不更新。
- SearchCase - 指示搜索是否区分大小写(默认为 ESearchCase::IgnoreCase )。
- SearchDir - 指示搜索是从开头还是结尾开始(默认为 ESearchDir::From Start )。
- 返回值:如果字符串被拆分,则为 true,否则为 false。
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static bool Split(const FString& SourceString, const FString& InStr, FString& LeftS, FString& RightS, ESearchCase::Type SearchCase = ESearchCase::IgnoreCase, ESearchDir::Type SearchDir = ESearchDir::FromStart);
======================================================================================================
Left、Right (返回最左边或最右边的给定字符数)
- 参数:
- SourceString - 源字符串。
- Count - 给定字符数。
- 返回值:返回最左边或最右边的给定字符数。
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static FString Left(const FString& SourceString, int32 Count);
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static FString Right(const FString& SourceString, int32 Count);
======================================================================================================
LeftChop、RightChop (从字符串中返回最左边或最右边的字符,从末尾切掉给定数量的字符)
- 参数:
- SourceString - 源字符串。
- Count - 给定字符数。
- 返回值:从字符串中返回最左边或最右边的字符,从末尾切掉给定数量的字符。
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static FString LeftChop(const FString& SourceString, int32 Count);
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static FString RightChop(const FString& SourceString, int32 Count);
======================================================================================================
Mid (从起始位置返回 Count 个字符的子字符串)
- 参数:
- SourceString - 源字符串。
- Start - 从指定字符开始。
- Count - 给定字符数。
- 返回值:从起始位置返回 Count 个字符的子字符串。
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static FString Mid(const FString& SourceString, int32 Start, int32 Count);
======================================================================================================
TimeSecondsToString (将秒数转换为分钟)
- 参数:
- InSeconds - 输入秒数。
- 返回值:从 seconds 参数构建的新字符串。
UFUNCTION(BlueprintPure, Category = "Utilities|String")
static FString TimeSecondsToString(float InSeconds);
======================================================================================================
未完待续…