GFramework/GFramework.Core/extensions/StringExtensions.cs
GeWuYou df0f00bd9e refactor(core): 重构核心库代码结构
- 将异步扩展方法移至新的 AsyncFunctionalExtensions 类中
- 删除重复的数值扩展、对象扩展和字符串扩展方法
- 添加 Option 函数式编程类型实现
- 重命名 ResultExtensions 文件路径
- 修复 ResultExtensions 中的错误处理逻辑
- 更新命名空间以符合新的包结构
2026-02-26 14:45:39 +08:00

74 lines
2.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

namespace GFramework.Core.extensions;
/// <summary>
/// 字符串扩展方法
/// </summary>
public static class StringExtensions
{
/// <summary>
/// 如果字符串为空,则返回 null否则返回原字符串
/// </summary>
/// <param name="str">要检查的字符串</param>
/// <returns>如果字符串为空则返回 null否则返回原字符串</returns>
/// <example>
/// <code>
/// string text = "";
/// var result = text.NullIfEmpty(); // 返回 null
/// </code>
/// </example>
public static string? NullIfEmpty(this string? str)
{
return string.IsNullOrEmpty(str) ? null : str;
}
/// <summary>
/// 截断字符串到指定的最大长度,并可选地添加后缀
/// </summary>
/// <param name="str">要截断的字符串</param>
/// <param name="maxLength">最大长度(包括后缀)</param>
/// <param name="suffix">截断时添加的后缀,默认为 "..."</param>
/// <returns>截断后的字符串</returns>
/// <exception cref="ArgumentNullException">当 str 为 null 时抛出</exception>
/// <exception cref="ArgumentOutOfRangeException">当 maxLength 小于后缀长度时抛出</exception>
/// <example>
/// <code>
/// var text = "Hello World";
/// var truncated = text.Truncate(8); // "Hello..."
/// </code>
/// </example>
public static string Truncate(this string str, int maxLength, string suffix = "...")
{
ArgumentNullException.ThrowIfNull(str);
ArgumentNullException.ThrowIfNull(suffix);
if (maxLength < suffix.Length)
throw new ArgumentOutOfRangeException(nameof(maxLength),
$"最大长度必须至少为后缀长度 ({suffix.Length})");
if (str.Length <= maxLength)
return str;
return string.Concat(str.AsSpan(0, maxLength - suffix.Length), suffix);
}
/// <summary>
/// 使用指定的分隔符连接字符串集合
/// </summary>
/// <param name="values">要连接的字符串集合</param>
/// <param name="separator">分隔符</param>
/// <returns>连接后的字符串</returns>
/// <exception cref="ArgumentNullException">当 values 或 separator 为 null 时抛出</exception>
/// <example>
/// <code>
/// var words = new[] { "Hello", "World" };
/// var result = words.Join(", "); // "Hello, World"
/// </code>
/// </example>
public static string Join(this IEnumerable<string> values, string separator)
{
ArgumentNullException.ThrowIfNull(values);
ArgumentNullException.ThrowIfNull(separator);
return string.Join(separator, values);
}
}