Files
Cielonos/Packages/com.lunawolfstudios.scriptablesheets/Editor/Modules/Shared/Utilities/StringUtility.cs
SoulliesOfficial 7ee2894a63 整合SLSUtilities
2026-01-17 11:35:49 -05:00

83 lines
2.1 KiB
C#

using System;
using System.Text;
namespace LunaWolfStudiosEditor.ScriptableSheets.Shared
{
public static class StringUtility
{
public static string DecodeBase64(this string text)
{
try
{
var bytes = Convert.FromBase64String(text);
var decodedText = Encoding.UTF8.GetString(bytes);
return decodedText;
}
catch (FormatException ex)
{
UnityEngine.Debug.LogWarning($"Error decoding '{text}'.\n{ex.Message}");
}
return text;
}
public static string EncodeBase64(this string text)
{
var bytes = Encoding.UTF8.GetBytes(text);
var encodedText = Convert.ToBase64String(bytes);
return encodedText;
}
public static string ExpandAll(this string text, int index, string type, int padding = 0)
{
return text.ExpandIndex(index, padding).ExpandType(type);
}
public static string ExpandIndex(this string text, int index, int padding = 0)
{
return text.Replace("{i}", index.ToString(new string('0', padding)));
}
public static string ExpandType(this string text, string type)
{
return text.Replace("{t}", type);
}
public static string GetEscapedText(this string text)
{
text = text.Replace("\\", "\\\\");
text = text.Replace("\r", "\\r");
text = text.Replace("\n", "\\n");
text = text.Replace("\t", "\\t");
return text;
}
public static string GetUnescapedText(this string text)
{
text = text.Replace("\\\\", "\\");
text = text.Replace("\\r", "\r");
text = text.Replace("\\n", "\n");
text = text.Replace("\\t", "\t");
return text;
}
public static bool MatchesSearch(this string text, string searchTerm, SearchSettings settings)
{
var stringComparison = settings.CaseSensitive ? StringComparison.Ordinal : StringComparison.OrdinalIgnoreCase;
if (settings.StartsWith)
{
return text.StartsWith(searchTerm, stringComparison);
}
else
{
return text.IndexOf(searchTerm, stringComparison) >= 0;
}
}
public static string UnwrapLayerMask(this string text)
{
// Unity wraps LayerMask values with 'LayerMask(#)' when copying from the Inspector.
return text.Replace("LayerMask(", string.Empty).Replace(")", string.Empty);
}
}
}