first commit
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using JSMachine.DCS.Infrastructure;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace System
|
||||
{
|
||||
public static class StringExtensions
|
||||
{
|
||||
public static string RandomString(int length)
|
||||
{
|
||||
var b = new byte[4];
|
||||
new RNGCryptoServiceProvider().GetBytes(b);
|
||||
var r = new Random(BitConverter.ToInt32(b, 0));
|
||||
var ret = string.Empty;
|
||||
const string str = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
for (var i = 0; i < length; i++)
|
||||
ret += str.Substring(r.Next(0, str.Length - 1), 1);
|
||||
return ret;
|
||||
}
|
||||
|
||||
public static string LogId => RandomString(48);
|
||||
|
||||
public static string GetMatch(this string text, string p1, string p2)
|
||||
{
|
||||
var rg = new Regex("(?<=(" + p1 + "))[.\\s\\S]*?(?=(" + p2 + "))",
|
||||
RegexOptions.Multiline | RegexOptions.Singleline);
|
||||
return rg.Match(text).Value;
|
||||
}
|
||||
|
||||
public static bool IsEmailAddress(this string @this)
|
||||
{
|
||||
return !string.IsNullOrEmpty(@this) && !string.IsNullOrWhiteSpace(@this); // TODO
|
||||
}
|
||||
|
||||
public static string TrimMiddle(this string @this, int limitLength, string omitPlaceholder = null)
|
||||
{
|
||||
const string defaultOmitPlaceholder = "...";
|
||||
|
||||
if (omitPlaceholder == null) omitPlaceholder = defaultOmitPlaceholder;
|
||||
Guards.ThrowIfNot(limitLength >= omitPlaceholder.Length);
|
||||
|
||||
if (string.IsNullOrEmpty(@this) || @this.Length <= limitLength) return @this;
|
||||
|
||||
if (limitLength == omitPlaceholder.Length) return omitPlaceholder;
|
||||
|
||||
var halfLength = (limitLength - omitPlaceholder.Length) / 2;
|
||||
var bias = (limitLength - omitPlaceholder.Length) % 2;
|
||||
|
||||
var firstHalfString = @this.Substring(0, halfLength + bias);
|
||||
var secondHalfString = @this.Substring(@this.Length - halfLength);
|
||||
|
||||
return $"{firstHalfString}{omitPlaceholder}{secondHalfString}";
|
||||
}
|
||||
|
||||
public static string UpperCamelCaseToDelimiterSeparated(this string upperCamelCase)
|
||||
{
|
||||
var stringBuilder = new StringBuilder(upperCamelCase.Length, upperCamelCase.Length * 2);
|
||||
|
||||
for (int i = 0; i < upperCamelCase.Length; i++)
|
||||
{
|
||||
var @char = upperCamelCase[i];
|
||||
if (char.IsUpper(@char))
|
||||
{
|
||||
if (i != 0) stringBuilder.Append('-');
|
||||
stringBuilder.Append(char.ToLower(@char));
|
||||
}
|
||||
else
|
||||
{
|
||||
stringBuilder.Append(@char);
|
||||
}
|
||||
}
|
||||
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user