BotSharp/src/Infrastructure/BotSharp.Abstraction/Utilities/StringExtensions.cs

112 lines
3.2 KiB
C#
Raw Normal View History

2023-10-26 18:52:44 +00:00
using System.Text.Json;
2023-08-17 04:04:23 +00:00
using System.Text.RegularExpressions;
2023-07-21 15:15:30 +00:00
namespace BotSharp.Abstraction.Utilities;
public static class StringExtensions
{
public static string IfNullOrEmptyAs(this string str, string defaultValue)
=> string.IsNullOrEmpty(str) ? defaultValue : str;
2023-07-28 03:12:12 +00:00
public static string SubstringMax(this string str, int maxLength)
{
if (string.IsNullOrEmpty(str))
return str;
if (str.Length > maxLength)
return str.Substring(0, maxLength);
else
return str;
}
2023-08-17 04:04:23 +00:00
2023-08-28 18:57:51 +00:00
public static string[] SplitByNewLine(this string input)
{
2023-11-14 14:13:54 +00:00
if (input == null)
{
return new string[0];
}
2023-08-28 18:57:51 +00:00
return input.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
}
2023-11-14 14:13:54 +00:00
public static string RemoveNewLine(this string input)
{
if (input == null)
{
return null;
}
return input.Replace("\r", " ").Replace("\n", " ").Trim();
}
2023-12-20 04:20:08 +00:00
public static bool IsEqualTo(this string? str1, string? str2, StringComparison option = StringComparison.OrdinalIgnoreCase)
{
2023-12-20 04:20:08 +00:00
if (str1 == null) return str2 == null;
return str1.Equals(str2, option);
}
2023-10-26 18:52:44 +00:00
2024-09-10 19:02:25 +00:00
public static string CleanStr(this string? str)
2024-09-09 22:42:09 +00:00
{
if (string.IsNullOrWhiteSpace(str)) return string.Empty;
return str.Replace(" ", "").Replace("\t", "").Replace("\n", "").Replace("\r", "");
}
2023-10-26 18:52:44 +00:00
public static string JsonContent(this string text)
{
var m = Regex.Match(text, @"\{(?:[^{}]|(?<open>\{)|(?<-open>\}))+(?(open)(?!))\}");
return m.Success ? m.Value : "{}";
}
public static T? JsonContent<T>(this string text)
{
text = JsonContent(text);
2023-11-01 21:30:39 +00:00
var options = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true,
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
WriteIndented = true,
AllowTrailingCommas = true
};
return JsonSerializer.Deserialize<T>(text, options);
2023-10-26 18:52:44 +00:00
}
2023-12-14 21:15:07 +00:00
public static string JsonArrayContent(this string text)
{
var m = Regex.Match(text, @"\[(.|\n|\r)*\]");
return m.Success ? m.Value : "[]";
}
public static T[]? JsonArrayContent<T>(this string text)
{
text = JsonArrayContent(text);
var options = new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true,
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
WriteIndented = true,
AllowTrailingCommas = true
};
return JsonSerializer.Deserialize<T[]>(text, options);
}
2025-03-04 23:25:35 +00:00
public static bool IsPrimitiveValue(this string value)
{
return int.TryParse(value, out _) ||
long.TryParse(value, out _) ||
double.TryParse(value, out _) ||
float.TryParse(value, out _) ||
bool.TryParse(value, out _) ||
char.TryParse(value, out _) ||
byte.TryParse(value, out _) ||
sbyte.TryParse(value, out _) ||
short.TryParse(value, out _) ||
ushort.TryParse(value, out _) ||
uint.TryParse(value, out _) ||
ulong.TryParse(value, out _);
}
2023-07-21 15:15:30 +00:00
}