框架上传
This commit is contained in:
@@ -0,0 +1,275 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace Stary.Evo
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
[ClassAPI("01.FluentAPI.CSharp", "System.String", 1)]
|
||||
[APIDescriptionCN("针对 System.String 提供的链式扩展,理论上任何集合都可以使用")]
|
||||
[APIDescriptionEN("The chain extension provided by System.Collections can theoretically be used by any collection")]
|
||||
#endif
|
||||
public static class SystemStringExtension
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.18
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("检测是否为空或 Empty")]
|
||||
[APIDescriptionEN("Check Whether string is null or empty")]
|
||||
[APIExampleCode(@"
|
||||
Debug.Log(string.Empty.IsNullOrEmpty());
|
||||
// true
|
||||
")]
|
||||
#endif
|
||||
public static bool IsNullOrEmpty(this string selfStr)
|
||||
{
|
||||
return string.IsNullOrEmpty(selfStr);
|
||||
}
|
||||
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.19
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("检测是否为非空且非Empty")]
|
||||
[APIDescriptionEN("Checks both not null and non-empty")]
|
||||
[APIExampleCode(@"
|
||||
Debug.Log(""Hello"".IsNotNullAndEmpty());
|
||||
// true
|
||||
")]
|
||||
#endif
|
||||
public static bool IsNotNullAndEmpty(this string selfStr)
|
||||
{
|
||||
return !string.IsNullOrEmpty(selfStr);
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.20
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("去掉两端空格后,检测是否为空或 Empty")]
|
||||
[APIDescriptionEN("Check if it is Empty or Empty after removing whitespace from both sides")]
|
||||
[APIExampleCode(@"
|
||||
Debug.Log("" "".IsTrimNullOrEmpty());
|
||||
// true
|
||||
")]
|
||||
#endif
|
||||
public static bool IsTrimNullOrEmpty(this string selfStr)
|
||||
{
|
||||
return selfStr == null || string.IsNullOrEmpty(selfStr.Trim());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Check Whether string trim is null or empty
|
||||
/// </summary>
|
||||
/// <param name="selfStr"></param>
|
||||
/// <returns></returns>
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.21
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("去掉两端空格后,检测是否为非 null 且非 Empty")]
|
||||
[APIDescriptionEN("After removing whitespace from both sides, check whether it is non-null and non-empty")]
|
||||
[APIExampleCode(@"
|
||||
Debug.Log("" 123 "".IsTrimNotNullAndEmpty());
|
||||
// true
|
||||
")]
|
||||
#endif
|
||||
public static bool IsTrimNotNullAndEmpty(this string selfStr)
|
||||
{
|
||||
return selfStr != null && !string.IsNullOrEmpty(selfStr.Trim());
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 缓存
|
||||
/// </summary>
|
||||
private static readonly char[] mCachedSplitCharArray = { '.' };
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.22
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("字符串分割")]
|
||||
[APIDescriptionEN("String splitting")]
|
||||
[APIExampleCode(@"
|
||||
""1.2.3.4.5"".Split('.').ForEach(str=>Debug.Log(str));
|
||||
// 1 2 3 4 5
|
||||
")]
|
||||
#endif
|
||||
public static string[] Split(this string selfStr, char splitSymbol)
|
||||
{
|
||||
mCachedSplitCharArray[0] = splitSymbol;
|
||||
return selfStr.Split(mCachedSplitCharArray);
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.23
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("格式化字符串填充参数")]
|
||||
[APIDescriptionEN("The format string populates the parameters")]
|
||||
[APIExampleCode(@"
|
||||
|
||||
var newStr = ""{0},{1}"".FillFormat(1,2);
|
||||
Debug.Log(newStr);
|
||||
// 1,2
|
||||
")]
|
||||
#endif
|
||||
public static string FillFormat(this string selfStr, params object[] args)
|
||||
{
|
||||
return string.Format(selfStr, args);
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.24
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("返回包含此字符串的 StringBuilder")]
|
||||
[APIDescriptionEN("Returns a StringBuilder containing this string")]
|
||||
[APIExampleCode(@"
|
||||
var builder = ""Hello"".Builder();
|
||||
builder.Append("" QF"");
|
||||
Debug.Log(builder.ToString());
|
||||
// Hello QF
|
||||
")]
|
||||
#endif
|
||||
public static StringBuilder Builder(this string selfStr)
|
||||
{
|
||||
return new StringBuilder(selfStr);
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.25
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("StringBuilder 添加前缀")]
|
||||
[APIDescriptionEN("StringBuilder insert prefix string")]
|
||||
[APIExampleCode(@"
|
||||
var builder = ""I'm liangxie"".Builder().AddPrefix(""Hi!"") ;
|
||||
Debug.Log(builder.ToString());
|
||||
// Hi!I'm liangxie
|
||||
")]
|
||||
#endif
|
||||
public static StringBuilder AddPrefix(this StringBuilder self, string prefixString)
|
||||
{
|
||||
self.Insert(0, prefixString);
|
||||
return self;
|
||||
}
|
||||
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.26
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("字符串解析成 Int")]
|
||||
[APIDescriptionEN("parse string to int")]
|
||||
[APIExampleCode(@"
|
||||
var number = ""123456"".ToInt();
|
||||
Debug.Log(number);
|
||||
// 123456
|
||||
// notice unsafe
|
||||
// 不安全
|
||||
")]
|
||||
#endif
|
||||
public static int ToInt(this string selfStr, int defaulValue = 0)
|
||||
{
|
||||
var retValue = defaulValue;
|
||||
return int.TryParse(selfStr, out retValue) ? retValue : defaulValue;
|
||||
}
|
||||
|
||||
public static long ToLong(this string self, long defaultValue = 0)
|
||||
{
|
||||
var retValue = defaultValue;
|
||||
return long.TryParse(self, out retValue) ? retValue : defaultValue;
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.27
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("字符串解析成 Int")]
|
||||
[APIDescriptionEN("parse string to int")]
|
||||
[APIExampleCode(@"
|
||||
DateTime.Now.ToString().ToDataTime();
|
||||
")]
|
||||
#endif
|
||||
public static DateTime ToDateTime(this string selfStr, DateTime defaultValue = default(DateTime))
|
||||
{
|
||||
return DateTime.TryParse(selfStr, out var retValue) ? retValue : defaultValue;
|
||||
}
|
||||
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.28
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("字符串解析成 float")]
|
||||
[APIDescriptionEN("parse string to float")]
|
||||
[APIExampleCode(@"
|
||||
var number = ""123456f"".ToInt();
|
||||
Debug.Log(number);
|
||||
// 123456
|
||||
// notice unsafe
|
||||
// 不安全
|
||||
")]
|
||||
#endif
|
||||
public static float ToFloat(this string selfStr, float defaultValue = 0)
|
||||
{
|
||||
return float.TryParse(selfStr, out var retValue) ? retValue : defaultValue;
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.29
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("是否存在中文字符")]
|
||||
[APIDescriptionEN("check string contains chinese or not")]
|
||||
[APIExampleCode(@"
|
||||
Debug.Log(""你好"".HasChinese());
|
||||
// true
|
||||
")]
|
||||
#endif
|
||||
public static bool HasChinese(this string input)
|
||||
{
|
||||
return Regex.IsMatch(input, @"[\u4e00-\u9fa5]");
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.30
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("是否存在空格")]
|
||||
[APIDescriptionEN("check string contains space or not")]
|
||||
[APIExampleCode(@"
|
||||
Debug.Log(""你好 "".HasSpace());
|
||||
// true
|
||||
")]
|
||||
#endif
|
||||
public static bool HasSpace(this string input)
|
||||
{
|
||||
return input.Contains(" ");
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1 No.31
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("remove string")]
|
||||
[APIDescriptionEN("check string contains space or not")]
|
||||
[APIExampleCode(@"
|
||||
Debug.Log(""Hello World "".RemoveString(""Hello"","" ""));
|
||||
// World
|
||||
")]
|
||||
#endif
|
||||
public static string RemoveString(this string str, params string[] targets)
|
||||
{
|
||||
return targets.Aggregate(str, (current, t) => current.Replace(t, string.Empty));
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
// v1.0.39
|
||||
[MethodAPI]
|
||||
[APIDescriptionCN("join string")]
|
||||
[APIDescriptionEN("join string")]
|
||||
[APIExampleCode(@"
|
||||
Debug.Log(new List<string>() { ""1"",""2"",""3""}.StringJoin("",""));
|
||||
// 1,2,3
|
||||
")]
|
||||
#endif
|
||||
public static string StringJoin(this IEnumerable<string> self, string separator)
|
||||
{
|
||||
return string.Join(separator, self);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user