using System;
using System.IO;
using System.Text;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace SK.Framework
{
public static class StringExtension
{
///
/// 计算目标字符在字符串中出现的次数 不区分大小写
///
/// 字符串
/// 目标字符
/// 次数
public static int Count(this string self, char target)
{
char[] charArray = self.ToCharArray();
string targetStr = target.ToString().ToLower();
int retV = 0;
for (int i = 0; i < charArray.Length; i++)
{
if(targetStr == charArray[i].ToString().ToLower())
{
retV++;
}
}
return retV;
}
///
/// 字符串拼接
///
/// 字符串
/// 被拼接的字符串
/// 拼接后的字符串
public static string Concat(this string self, params string[] strs)
{
StringBuilder sb = new StringBuilder();
sb.Append(self);
for (int i = 0; i < strs.Length; i++)
{
sb.Append(strs[i]);
}
return sb.ToString();
}
///
/// 字符串拼接
///
/// 字符串
/// 被拼接的字符串列表
/// 拼接后的字符串
public static string Concat(this string self, List strs)
{
StringBuilder sb = new StringBuilder();
sb.Append(self);
for (int i = 0; i < strs.Count; i++)
{
sb.Append(strs[i]);
}
return sb.ToString();
}
///
/// 尝试转化为int
///
/// 字符串
/// 转化结果
public static int TryToInt(this string self)
{
return int.TryParse(self, out int retValue) ? retValue : int.MinValue;
}
///
/// 尝试转化为float
///
/// 字符串
/// 转化结果
public static float ToFloat(this string self)
{
return float.TryParse(self, out float retValue) ? retValue : float.MinValue;
}
///
/// 尝试转化为枚举
///
/// 枚举类型
/// 字符串
/// 转化结果
public static T ToEnum(this string self)
{
try
{
return (T)Enum.Parse(typeof(T), self);
}
catch
{
return default;
}
}
///
/// 尝试转化为枚举
///
/// 枚举类型
/// 字符串
/// 是否忽略大小写
/// 转化结果
public static T ToEnum(this string self, bool ignoreCase)
{
try
{
return (T)Enum.Parse(typeof(T), self, ignoreCase);
}
catch
{
return default;
}
}
///
/// 大写字符串首字符
///
/// 字符串
/// 字符串
public static string UppercaseFirst(this string self)
{
return char.ToUpper(self[0]) + self.Substring(1);
}
///
/// 小写字符串首字符
///
///
///
public static string LowercaseFirst(this string self)
{
return char.ToLower(self[0]) + self.Substring(1);
}
///
/// 判断字符串是否为Null或Empty
///
/// 字符串
/// 是否为Null或Empty
public static bool IsNullOrEmpty(this string self)
{
return string.IsNullOrEmpty(self);
}
///
/// 判断字符串是否为Null或WhiteSpace
///
/// 字符串
/// 是否为Null或WhiteSpace
public static bool IsNullOrWhiteSpace(this string self)
{
return string.IsNullOrWhiteSpace(self);
}
///
/// 判断文件是否存在
///
/// 文件路径
/// 是否存在
public static bool FileExists(this string self)
{
return File.Exists(self);
}
///
/// 根据路径删除文件
///
/// 文件路径
/// 删除结果
public static bool DeleteFile(this string self)
{
if (File.Exists(self))
{
File.Delete(self);
return true;
}
return false;
}
///
/// 判断文件夹是否存在
///
/// 文件夹路径
/// 是否存在
public static bool DirectoryExists(this string self)
{
return Directory.Exists(self);
}
///
/// 根据路径创建文件夹
///
/// 文件夹路径
/// 文件夹路径
public static string CreateDirectory(this string self)
{
if (!Directory.Exists(self))
{
Directory.CreateDirectory(self);
}
return self;
}
///
/// 根据路径删除文件夹
///
/// 文件夹路径
/// 删除结果
public static bool DeleteDirectory(this string self)
{
if (Directory.Exists(self))
{
Directory.Delete(self);
return true;
}
return false;
}
///
/// 合并路径
///
/// 路径
/// 被合并的路径
/// 合并后的路径
public static string PathCombine(this string self, string beCombined)
{
return Path.Combine(self, beCombined);
}
///
/// 转化为base64字符串
///
/// 字符串
/// base64字符串
public static string ToBase64String(this string self)
{
return Convert.ToBase64String(Encoding.UTF8.GetBytes(self));
}
///
/// 判断字符串是否包含中文
///
/// 字符串
/// 若字符串包含中文返回true,否则返回false
public static bool IsContainChinese(this string self)
{
return Regex.IsMatch(self, @"[\u4e00-\u9fa5]");
}
///
/// 判断字符串是否为16进制数据
///
/// 字符串
/// 若字符串符合16进制数据格式返回true,否则返回false
public static bool IsMatchHexadecimal(this string self)
{
return Regex.IsMatch(self, @"/^#?([a-f0-9]{6}|[a-f0-9]{3})$/");
}
///
/// 判断字符串是否为url
///
/// 字符串
/// 若字符串符合url地址格式返回true,否则返回false
public static bool IsMatchURL(this string self)
{
return Regex.IsMatch(self, @"/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/");
}
///
/// 判断字符串是否为IP地址
///
/// 字符串
/// 若字符串符合IP地址格式返回true,否则返回false
public static bool IsMatchIPAddress(this string self)
{
return Regex.IsMatch(self, @"/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/");
}
///
/// 判断字符串是否为Email邮箱
///
/// 字符串
/// 若字符串符合Email邮箱格式返回true,否则返回false
public static bool IsMatchEmail(this string self)
{
return Regex.IsMatch(self, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$");
}
///
/// 判断字符串是否为手机号码
///
/// 字符串
/// 若字符串符合手机号码格式返回true,否则返回false
public static bool IsMatchMobilePhoneNumber(this string self)
{
return Regex.IsMatch(self, @"^0{0,1}(13[4-9]|15[7-9]|15[0-2]|18[7-8])[0-9]{8}$");
}
}
}