mirror of
https://github.com/chylex/TweetDuck.git
synced 2025-04-28 00:15:47 +02:00
* Switch to .NET Framework 4.7.2 & C# 8.0, update libraries * Add TweetLib.Core project targeting .NET Standard 2.0 * Enable reference nullability checks for TweetLib.Core * Move a bunch of utility classes into TweetLib.Core & refactor * Partially move TweetDuck plugin & update system to TweetLib.Core * Move some constants and CultureInfo setup to TweetLib.Core * Move some configuration classes to TweetLib.Core * Minor refactoring and warning suppression * Add App to TweetLib.Core * Add IAppErrorHandler w/ implementation * Continue moving config, plugin, and update classes to TweetLib.Core * Fix a few nullability checks * Update installers to check for .NET Framework 4.7.2
46 lines
1.6 KiB
C#
46 lines
1.6 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace TweetLib.Core.Utils{
|
|
public static class StringUtils{
|
|
public static readonly string[] EmptyArray = new string[0];
|
|
|
|
public static string ExtractBefore(string str, char search, int startIndex = 0){
|
|
int index = str.IndexOf(search, startIndex);
|
|
return index == -1 ? str : str.Substring(0, index);
|
|
}
|
|
|
|
public static int[] ParseInts(string str, char separator){
|
|
return str.Split(new char[]{ separator }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray();
|
|
}
|
|
|
|
public static string ConvertPascalCaseToScreamingSnakeCase(string str){
|
|
return Regex.Replace(str, @"(\p{Ll})(\P{Ll})|(\P{Ll})(\P{Ll}\p{Ll})", "$1$3_$2$4").ToUpper();
|
|
}
|
|
|
|
public static string ConvertRot13(string str){
|
|
return Regex.Replace(str, @"[a-zA-Z]", match => {
|
|
int code = match.Value[0];
|
|
int start = code <= 90 ? 65 : 97;
|
|
return ((char)(start + (code - start + 13) % 26)).ToString();
|
|
});
|
|
}
|
|
|
|
public static int CountOccurrences(string source, string substring){
|
|
if (substring.Length == 0){
|
|
throw new ArgumentOutOfRangeException(nameof(substring), "Searched substring must not be empty.");
|
|
}
|
|
|
|
int count = 0, index = 0, length = substring.Length;
|
|
|
|
while((index = source.IndexOf(substring, index)) != -1){
|
|
index += length;
|
|
++count;
|
|
}
|
|
|
|
return count;
|
|
}
|
|
}
|
|
}
|