Konvertiert ein Array von Objekten in eine von Kommas getrennte Werte (CSV), die nur die angegebenen columns enthält.
// TODO // TODO
↑ zurück nach oben
Nimmt eine beliebige Anzahl iterierbarer Objekte oder Objekte mit einer length Eigenschaft und gibt die längste zurück. Wenn mehrere Objekte die gleiche Länge haben, wird der erste zurückgegeben. Rückgabe -1 , wenn keine Argumente vorgelegt werden.
// TODO // TODO
↑ zurück nach oben
Gibt die n Elemente des bereitgestellten Arrays zurück. Wenn n größer oder gleich der Länge des angegebenen Arrays ist, geben Sie das ursprüngliche Array zurück (sortiert in absteigender Reihenfolge).
// TODO // TODO
↑ zurück nach oben
Gibt die n Elemente aus dem bereitgestellten Array zurück. Wenn n größer oder gleich der Länge des angegebenen Arrays ist, geben Sie das ursprüngliche Array (sortiert in aufsteigender Reihenfolge) zurück.
// TODO // TODO
↑ zurück nach oben
Gibt true zurück, wenn die bereitgestellte Prädikatfunktion für alle Elemente in einer Sammlung false zurückgibt, ansonsten false .
namespace JonasSchubert . Snippets . Enumerable
{
public static partial class Enumerable
{
public static bool None < T > ( this IEnumerable < T > enumerable , Func < T , bool > predicate )
{
try
{
return enumerable . First ( predicate ) == null ;
}
catch ( Exception )
{
return true ;
}
}
}
} new List < int > { 3 , 2 , 0 } . None ( x => x == 1 ) ; # true
new string [ ] { "Hello" , "World" } . None ( x => x . Length == 6 ) # true
new bool [ ] { true , false } . None ( x => ! x ) ; # false
↑ zurück nach oben
Gibt das nte Element eines Arrays zurück.
// TODO // TODO
↑ zurück nach oben
Verschiebt die angegebene Menge an Elementen bis zum Ende des Arrays.
// TODO // TODO
↑ zurück nach oben
Sortiert eine Sammlung von Arrays.
// TODO // TODO
↑ zurück nach oben
Gruppiert die Elemente in zwei Arrays, abhängig von der Wahrheitsgrad der bereitgestellten Funktion für jedes Element.
// TODO // TODO
↑ zurück nach oben
Erzeugt alle Permutationen der Elemente eines Arrays (enthält Duplikate).
// TODO // TODO
↑ zurück nach oben
Ruft alle Werte für einen bestimmten Schlüssel ab.
// TODO // TODO
↑ zurück nach oben
Mutiert das ursprüngliche Array, um die angegebenen Werte herauszufiltern.
// TODO // TODO
↑ zurück nach oben
Mutiert das ursprüngliche Array, um die Werte in den angegebenen Indizes herauszufiltern.
// TODO // TODO
↑ zurück nach oben
Mutiert das ursprüngliche Array, um die angegebenen Werte herauszufiltern. Gibt die entfernten Elemente zurück.
// TODO // TODO
↑ zurück nach oben
Mutiert das ursprüngliche Array, um die angegebenen Werte basierend auf einer bestimmten Iteratorfunktion herauszufiltern.
// TODO // TODO
↑ zurück nach oben
Filtern Sie eine Anordnung von Objekten basierend auf einer Bedingung und filtern Sie gleichzeitig nicht spezifizierte Schlüssel.
// TODO // TODO
↑ zurück nach oben
Wendet eine Funktion gegen einen Akkumulator und jedes Element im Array (von links nach rechts) an, wodurch ein Array von nacheinander reduzierten Werten zurückgegeben wird.
// TODO // TODO
↑ zurück nach oben
Gibt den minimalen/maximalen Wert eines Arrays zurück, nachdem die angegebene Funktion zum Einstellen der Vergleichsregel angewendet wird.
// TODO // TODO
↑ zurück nach oben
Nimmt ein Prädikat und ein Array wie Array.prototype.filter() , behält jedoch nur x wenn pred(x) === false .
// TODO // TODO
↑ zurück nach oben
Entfernt Elemente aus einem Array, für das die angegebene Funktion false zurückgibt.
// TODO // TODO
↑ zurück nach oben
Gibt ein zufälliges Element aus einem Array zurück.
// TODO // TODO
↑ zurück nach oben
Erholt sich n Elemente bei einzigartigen Schlüssel von array bis zur Größe des array .
// TODO // TODO
↑ zurück nach oben
Diese Methode ändert den Inhalt eines Arrays, indem vorhandene Elemente und/oder neue Elemente hinzugefügt werden. Ähnlich wie bei der JavaScript -Version Array.prototype.splice()
// TODO // TODO
↑ zurück nach oben
Randomisiert die Reihenfolge der Werte eines Arrays und gibt ein neues Array zurück.
// TODO // TODO
↑ zurück nach oben
Gibt eine Reihe von Elementen zurück, die in beiden Arrays erscheinen.
// TODO // TODO
↑ zurück nach oben
Direction.NotSorted Direction.Ascending Wenn das aufzählbare Reihenfolge in aufsteigender Reihenfolge sortiert ist Direction.Descending
namespace JonasSchubert . Snippets . Enumerable
{
public static partial class Enumerable
{
public static Direction SortedDirection < T > ( this IEnumerable < T > enumerable )
{
if ( enumerable == null )
{
throw new ArgumentNullException ( nameof ( enumerable ) ) ;
}
if ( enumerable . Count ( ) <= 1 )
{
return Direction . NotSorted ;
}
var direction = enumerable . GetDirection ( 0 , 1 ) ;
if ( enumerable . Count ( ) > 2 )
{
for ( var index = 2 ; index < enumerable . Count ( ) ; index ++ )
{
var currentDirection = enumerable . GetDirection ( index - 1 , index ) ;
direction = direction == Direction . NotSorted ? currentDirection : direction ;
if ( direction != currentDirection )
{
return Direction . NotSorted ;
}
}
}
return direction ;
}
private static Direction GetDirection < T > ( this IEnumerable < T > enumerable , int indexStart , int indexEnd )
{
var compareResult = Comparer < T > . Default . Compare ( enumerable . ElementAt ( indexStart ) , enumerable . ElementAt ( indexEnd ) ) ;
return compareResult < 0 ? Direction . Ascending : compareResult > 0 ? Direction . Descending : Direction . NotSorted ;
}
}
}Verwendet Enum Jonassschubert.snippets.Enumerable.Direction.
public enum Direction
{
NotSorted ,
Ascending ,
Descending
} new List < uint > { 1 , 2 , 3 , 4 , 5 } . SortedDirection ( ) ; # Direction . Ascending
new string [ ] { "C" , "B" , "A" } . SortedDirection ( ) ; # Direction . Descending
new List < TestStruct > ( ) { new TestStruct { Byte = 0 } , new TestStruct { Byte = 1 } , new TestStruct { Byte = 0 } } . SortedDirection ( ) ; # Direction . NotSorted
↑ zurück nach oben
Gibt den niedrigsten Index zurück, bei dem der Wert in ein Array eingefügt werden sollte, um seine Sortierreihenfolge beizubehalten.
// TODO // TODO
↑ zurück nach oben
Gibt den niedrigsten Index zurück, bei dem der Wert in ein Array eingefügt werden sollte, um seine Sortierreihenfolge auf der Basis einer bereitgestellten Iteratorfunktion aufrechtzuerhalten.
// TODO // TODO
↑ zurück nach oben
Gibt den höchsten Index zurück, bei dem der Wert in ein Array eingefügt werden sollte, um seine Sortierreihenfolge beizubehalten.
// TODO // TODO
↑ zurück nach oben
Gibt den höchsten Index zurück, bei dem der Wert in ein Array eingefügt werden sollte, um seine Sortierreihenfolge auf der Basis einer bereitgestellten Iteratorfunktion aufrechtzuerhalten.
// TODO // TODO
↑ zurück nach oben
Führt eine stabile Sortierung eines Arrays durch, wobei die ersten Indizes von Elementen beibehalten werden, wenn ihre Werte gleich sind. Mutiert das ursprüngliche Array nicht, sondern gibt stattdessen ein neues Array zurück.
// TODO // TODO
↑ zurück nach oben
Gibt die symmetrische Differenz zwischen zwei Arrays zurück, ohne doppelte Werte herauszufiltern.
// TODO // TODO
↑ zurück nach oben
Gibt die symmetrische Differenz zwischen zwei Arrays zurück, nachdem die bereitgestellte Funktion auf jedes Array -Element von beiden angewendet wurde.
// TODO // TODO
↑ zurück nach oben
Gibt die symmetrische Differenz zwischen zwei Arrays zurück, wobei eine bereitgestellte Funktion als Komparator verwendet wird.
// TODO // TODO
↑ zurück nach oben
Gibt alle Elemente in einem Array mit Ausnahme des ersten zurück.
// TODO // TODO
↑ zurück nach oben
Gibt ein Array mit N -Elementen zurück, die von Anfang an entfernt wurden.
// TODO // TODO
↑ zurück nach oben
Gibt ein Array mit N -Elementen zurück, die vom Ende entfernt wurden.
// TODO // TODO
↑ zurück nach oben
Entfernt Elemente vom Ende eines Arrays, bis die übergebene Funktion true zurückgibt. Gibt die entfernten Elemente zurück.
// TODO // TODO
↑ zurück nach oben
Entfernt Elemente in einem Array, bis die übergebene Funktion true zurückgibt. Gibt die entfernten Elemente zurück.
// TODO // TODO
↑ zurück nach oben
Konvertiert eine 2D-Aufzählung in eine von Kommas getrennte Werte (CSV).
namespace JonasSchubert . Snippets . Enumerable
{
public static partial class Enumerable
{
public static string ToCsv < T > ( this IEnumerable < IEnumerable < T > > enumerable , string delimiter = "," )
{
if ( enumerable == null )
{
throw new ArgumentNullException ( nameof ( enumerable ) ) ;
}
return string . Join ( " n " , enumerable . Select ( subEnumerable => string . Join ( delimiter , subEnumerable . Select ( value => typeof ( T ) . IsNumericType ( ) ? value . ToString ( ) . Replace ( "," , "." ) : value . ToString ( ) ) ) ) ) ;
}
}
} new List < List < bool > > { new List < bool > { true , true } , new List < bool > { true , false } } . ToCsv ( ) ; # "True,True n True,False"
new double [ ] [ ] { new double [ ] { 1.1 , 2.2 , 3.3 } , new double [ ] { 4.4 , 5.5 , 6.6 } } . ToCsv ( ) # "1.1,2.2,3.3 n 4.4,5.5,6.6"
new List < List < TestStruct >> { new List < TestStruct > { new TestStruct { Byte = 0 } } , new List < TestStruct > { new TestStruct { Byte = 1 } , new TestStruct { Byte = 2 } } } . ToCsv ( "-" ) # "Byte: 0 n Byte: 1-Byte: 2"
↑ zurück nach oben
Reduziert ein bestimmtes Array-ähnlich in einen Wert-Hash (KEYED-Datenspeicher).
// TODO // TODO
↑ zurück nach oben
Gibt jedes Element zurück, das einmal in einem der beiden Arrays existiert.
// TODO // TODO
↑ zurück nach oben
Gibt jedes Element zurück, das in einem der beiden Arrays einmal vorhanden ist, nachdem die bereitgestellte Funktion auf jedes Array -Element von beiden angewendet wurde.
// TODO // TODO
↑ zurück nach oben
Gibt jedes Element zurück, das in einem der beiden Arrays einmal vorhanden ist, wobei eine bereitgestellte Komparatorfunktion verwendet wird.
// TODO // TODO
↑ zurück nach oben
Gibt alle eindeutigen Werte eines Arrays zurück.
// TODO // TODO
↑ zurück nach oben
Gibt alle eindeutigen Werte eines Arrays zurück, basierend auf einer bereitgestellten Komparatorfunktion.
// TODO // TODO
↑ zurück nach oben
Gibt alle eindeutigen Werte eines Arrays zurück, basierend auf einer bereitgestellten Komparatorfunktion.
// TODO // TODO
↑ zurück nach oben
Gibt die eindeutige symmetrische Differenz zwischen zwei Arrays zurück, die nicht doppelte Werte von beiden Arrays enthalten.
// TODO // TODO
↑ zurück nach oben
Filtert die Elemente eines Arrays, die einen der angegebenen Werte haben.
// TODO // TODO
↑ zurück nach oben
Erstellt ein neues Array aus den beiden, die geliefert werden, indem jedes mögliche Paar aus den Arrays erstellt wird.
// TODO // TODO
↑ zurück nach oben
Überprüft, ob zwei Zahlen ungefähr gleich sind.
// TODO // TODO
↑ zurück nach oben
Gibt den Durchschnitt von zwei oder mehr Zahlen zurück.
Die Methode fährt Zahlen als Paramien aus und gibt den Durchschnitt als Ergebnis zurück.
LINQ -Dokumentation hier.
namespace JonasSchubert . Snippets . Math
{
public static partial class Math
{
public static double Average ( this uint [ ] elements )
{
if ( elements . Length == 0 ) return 0 ;
return elements . Aggregate ( 0.0 , ( current , element ) => current + element ) / elements . Length ;
}
}
} { 4 , 5 , 9 , 1 , 0 } . Average ( ) # 3.8
↑ zurück nach oben
Gibt den Durchschnitt eines Arrays zurück, nachdem jedes Element unter Verwendung der angegebenen Funktion auf einen Wert abgebildet wurde.
// TODO // TODO
↑ zurück nach oben
Bewertet den Binomialkoeffizienten von zwei Ganzzahlen n und k .
// TODO // TODO
↑ zurück nach oben
Konvertiert einen Winkel von Grad in Radians.
namespace JonasSchubert . Snippets . Math
{
public static partial class Math
{
public static double DegToRad ( this decimal degree ) => ( double ) degree * System . Math . PI / 180.0 ;
public static double DegToRad ( this double degree ) => degree * System . Math . PI / 180.0 ;
public static double DegToRad ( this float degree ) => degree * System . Math . PI / 180.0 ;
public static double DegToRad ( this int degree ) => degree * System . Math . PI / 180.0 ;
public static double DegToRad ( this uint degree ) => degree * System . Math . PI / 180.0 ;
}
} 270.0 . DegToRad ( ) ; # ~ 4.71
- 90u . DegToRad ( ) ; # ~ 1.57
720 . DegToRad ( ) ; # ~ 12.57
↑ zurück nach oben
Konvertiert eine Zahl in eine Reihe von Ziffern.
// TODO // TODO
↑ zurück nach oben
Gibt den Abstand zwischen zwei Punkten zurück.
// TODO // TODO
↑ zurück nach oben
Berechnet das Faktor einer Zahl.
namespace JonasSchubert . Snippets . Math
{
public static partial class Math
{
public static uint Factorial ( uint number )
{
var result = 1u ;
for ( var index = number ; index > 0 ; index -- )
{
result *= index ;
}
return result ;
}
}
} Math . Factorial ( 0 ) ; # 1
Math . Factorial ( 3 ) ; # 6
Math . Factorial ( 6 ) ; # 720
↑ zurück nach oben
Erzeugt eine Liste, die die Fibonacci -Sequenz bis zum N -ten Term enthält.
namespace JonasSchubert . Snippets . Math
{
public static partial class Math
{
public static List < int > Fibonaci ( int length )
{
var list = new List < int > ( ) ;
for ( var index = 0 ; index < length ; index ++ )
{
list . Add ( index <= 1 ? index : list [ index - 1 ] + list [ index - 2 ] ) ;
}
return list ;
}
}
} Math . Fibonaci ( 2 ) ; # n ew List < int > ( ) { 0 , 1 }
Math . Fibonaci ( 7 ) ; # n ew List < int > ( ) { 0 , 1 , 1 , 2 , 3 , 5 , 8 }
↑ zurück nach oben
Berechnet den größten gemeinsamen Divisor zwischen zwei oder mehr Zahlen/Arrays.
// TODO // TODO
↑ zurück nach oben
Initialisiert ein Array, das die Zahlen im angegebenen Bereich enthält, in dem start und end inklusive sind, und das Verhältnis zwischen zwei Begriffen ist step . Gibt einen Fehler zurück, wenn step gleich 1 ist.
// TODO // TODO
↑ zurück nach oben
Überprüft, ob die angegebene Zahl in den angegebenen Bereich fällt.
// TODO // TODO
↑ zurück nach oben
Überprüft, ob die A -Nummer durch eine andere Nummer teilbar ist.
namespace JonasSchubert . Snippets . Math
{
public static partial class Math
{
public static bool IsDivisibleBy ( this decimal value , decimal divider ) => divider == 0 ? throw new DivideByZeroException ( ) : value % divider == 0 ;
public static bool IsDivisibleBy ( this double value , double divider ) => divider == 0 ? throw new DivideByZeroException ( ) : value % divider == 0 ;
public static bool IsDivisibleBy ( this float value , float divider ) => divider == 0 ? throw new DivideByZeroException ( ) : value % divider == 0 ;
public static bool IsDivisibleBy ( this int value , int divider ) => divider == 0 ? throw new DivideByZeroException ( ) : value % divider == 0 ;
public static bool IsDivisibleBy ( this uint value , uint divider ) => divider == 0 ? throw new DivideByZeroException ( ) : value % divider == 0 ;
}
} 1 . IsDivisibleBy ( 2 ) ; # true
- 2.0 . IsDivisibleBy ( 2.0 ) ; # true
1.0f . IsDivisibleBy ( 2.0f ) ; # false
2u . IsDivisibleBy ( 2u ) ; # true
↑ zurück nach oben
Gibt true zurück, wenn die angegebene Zahl gleichmäßig ist, sonst false .
namespace JonasSchubert . Snippets . Math
{
public static partial class Math
{
public static bool IsEven ( this decimal value ) => value % 2 == 0 ;
public static bool IsEven ( this double value ) => value % 2 == 0 ;
public static bool IsEven ( this float value ) => value % 2 == 0 ;
public static bool IsEven ( this int value ) => value % 2 == 0 ;
public static bool IsEven ( this uint value ) => value % 2 == 0 ;
}
} 0 . IsEven ( ) ; # true
1u . IsEven ( ) ; # false
- 2.0 . IsEven ( ) ; # true
↑ zurück nach oben
Überprüft, ob die bereitgestellte Ganzzahl eine Primzahl ist.
// TODO // TODO
↑ zurück nach oben
Gibt true zurück, wenn die angegebene Nummer ungerade, sonst false ist.
namespace JonasSchubert . Snippets . Math
{
public static partial class Math
{
public static bool IsOdd ( this decimal value ) => value % 2 == 1 ;
public static bool IsOdd ( this double value ) => value % 2 == 1 ;
public static bool IsOdd ( this float value ) => value % 2 == 1 ;
public static bool IsOdd ( this int value ) => value % 2 == 1 ;
public static bool IsOdd ( this uint value ) => value % 2 == 1 ;
}
} 0 . IsOdd ( ) ; # false
1u . IsOdd ( ) ; # true
- 2.0 . IsOdd ( ) ; # false
↑ zurück nach oben
Gibt das am wenigsten gemeinsame Vielfachen von zwei oder mehr Zahlen zurück.
// TODO // TODO
↑ zurück nach oben
Implementierung des Luhn -Algorithmus zur Validierung einer Vielzahl von Identifikationsnummern wie Kreditkartennummern, IMEI -Nummern, nationalen Identifikatornummern usw. usw.
// TODO // TODO
↑ zurück nach oben
Gibt den Maximalwert aus dem bereitgestellten Aufzählung zurück.
// TODO // TODO
↑ zurück nach oben
Gibt den Median einer Reihe von Zahlen zurück.
// TODO // TODO
↑ zurück nach oben
Gibt den Mindestwert aus dem bereitgestellten Aufzählung zurück.
// TODO // TODO
↑ zurück nach oben
Erzeugt Primzahlen bis zu einer bestimmten Zahl unter Verwendung des Siebs von Eratosthenes.
// TODO // TODO
↑ zurück nach oben
Konvertiert einen Winkel von Radians in Grad.
namespace JonasSchubert . Snippets . Math
{
public static partial class Math
{
public static double RadToDeg ( this decimal radians ) => ( double ) radians * 180.0 / System . Math . PI ;
public static double RadToDeg ( this double radians ) => radians * 180.0 / System . Math . PI ;
public static double RadToDeg ( this float radians ) => radians * 180.0 / System . Math . PI ;
public static double RadToDeg ( this int radians ) => radians * 180.0 / System . Math . PI ;
public static double RadToDeg ( this uint radians ) => radians * 180.0 / System . Math . PI ;
}
} ( System . Math . PI / 2 ) . RadToDeg ( ) # 90
( System . Math . PI * - 2 ) . RadToDeg ( ) # - 360
↑ zurück nach oben
Gibt eine Reihe von n zufälligen Ganzzahlen im angegebenen Bereich zurück.
// TODO // TODO
↑ zurück nach oben
Gibt eine zufällige Ganzzahl im angegebenen Bereich zurück.
// TODO // TODO
↑ zurück nach oben
Gibt eine Zufallszahl im angegebenen Bereich zurück.
// TODO // TODO
↑ zurück nach oben
Runden eine Zahl auf eine bestimmte Menge an Ziffern.
// TODO // TODO
↑ zurück nach oben
Hashes die Eingangszeichenfolge in eine ganze Zahl.
// TODO // TODO
↑ zurück nach oben
Gibt die Standardabweichung einer Reihe von Zahlen zurück.
// TODO // TODO
↑ zurück nach oben
Gibt die Summe von zwei oder mehr Zahlen/Arrays zurück.
// TODO // TODO
↑ zurück nach oben
Gibt die Summe eines Arrays zurück, nachdem jedes Element unter Verwendung der angegebenen Funktion auf einen Wert abgebildet wurde.
// TODO // TODO
↑ zurück nach oben
Gibt die Häufigkeit zurück, mit der eine Funktion pro Sekunde ausgeführt wird. hz ist die Einheit für hertz , die als ein Zyklus pro Sekunde definierte Frequenzeinheit.
namespace JonasSchubert . Snippets . Method
{
public static partial class Method
{
public static long Hz (
Action action ,
uint iterations = 100000 )
{
var watch = Stopwatch . StartNew ( ) ;
for ( var iteration = 0 ; iteration < iterations ; iteration ++ )
{
action . Invoke ( ) ;
}
watch . Stop ( ) ;
return watch . ElapsedMilliseconds > 0
? ( iterations * 1000 ) / watch . ElapsedMilliseconds
: long . MaxValue ;
}
.. .
}
} # w ill return time depending on your PC power
int randomInt ( ) => new Random ( ) . Next ( 0 , 1000000 ) ;
Method . Hz ( randomInt ) ;
char [ ] charArrayFunc ( string test ) => test . ToCharArray ( ) . Select ( x => ( char ) ( x * 2 ) ) . Where ( x => x > 0 ) . ToArray ( ) ;
Method . Hz ( charArrayFunc ) ;
↑ zurück nach oben
Iteriert über einen Rückruf n -mal
namespace JonasSchubert . Snippets . Method
{
public static partial class Method
{
public static IList < T1 > Times < T1 > ( Func < T1 > func , uint times )
{
var list = new List < T1 > ( ) ;
for ( var index = 0 ; index < times ; index ++ )
{
list . Add ( func ( ) ) ;
}
return list ;
}
}
} Method . Times ( ( ( ) => true ) , 3 ) # list of size 3 , all values true
Method . Times ( ( ( int start , int end ) => new Random ( ) . Next ( start , end ) ) , 6 , 0 , 100 ) # list of size 6 with 6 random integers between 0 and 100
↑ zurück nach oben
Gibt die Länge einer Saite in Bytes zurück.
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static int ByteSize ( this string input ) => System . Text . Encoding . Default . GetByteCount ( input ) ;
public static int ByteSizeAscii ( this string input ) => System . Text . Encoding . ASCII . GetByteCount ( input ) ;
public static int ByteSizeBigEndianUnicode ( this string input ) => System . Text . Encoding . BigEndianUnicode . GetByteCount ( input ) ;
public static int ByteSizeUnicode ( this string input ) => System . Text . Encoding . Unicode . GetByteCount ( input ) ;
public static int ByteSizeUtf7 ( this string input ) => System . Text . Encoding . UTF7 . GetByteCount ( input ) ;
public static int ByteSizeUtf8 ( this string input ) => System . Text . Encoding . UTF8 . GetByteCount ( input ) ;
public static int ByteSizeUtf32 ( this string input ) => System . Text . Encoding . UTF32 . GetByteCount ( input ) ;
}
} // TODO
↑ zurück nach oben
Gibt die Anzahl der Vokale in der vorgesehenen Zeichenfolge zurück.
"" . ByteSize ( ) ; # 0
"Hello World" . ByteSize ( ) ; # 11
"Hello World" . ByteSizeUnicode ( ) ; # 22
"Hello World" . ByteSizeUtf32 ( ) ; # 44
"This is 30 seconds of C." . ByteSizeBigEndianUnicode ( ) ; # 48 // TODO
↑ zurück nach oben
Konvertiert eine von Kommas getrennte Werte (CSV) in ein 2D-Array.
// TODO // TODO
↑ zurück nach oben
Konvertiert eine von Kommas getrennte Werte (CSV) in ein 2D-Array von Objekten. Die erste Zeile der Zeichenfolge wird als Titelzeile verwendet.
// TODO // TODO
↑ zurück nach oben
Überprüfen Sie, ob eine Zeichenfolge mit einem bestimmten Substring mit einem Regex endet.
Die Methode ausgenommen die zu testende Zeichenfolge und ein Substring, gegen das man testen muss.
Die meisten anderen Schecks sind bereits integriert.
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static bool EndsWithRegex ( this string input , string substring ) => new Regex ( $ " { substring } $" ) . IsMatch ( input ) ;
}
} "Hello World" . EndsWithRegex ( @"[dolrwDOLRW]{5}$" ) # true
"Hello World, this is it" . EndsWithRegex ( @"[dolrwDOLRW]{5}$" ) # false
↑ zurück nach oben
Konvertiert eine Saite aus dem Kamelase. Macht alle Wörter in Kleinbuchstaben und kombiniert sie mit einem bereitgestellten Trennzeichen (Standard ist eine Weißespace). Der erste Buchstaben des Satzes ist der Großbuchstaben im Großraum und ein Punkt wird am Ende hinzugefügt (Standard ist wahr).
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static string FromCamelCase ( this string input , string separator = " " , bool isSentence = true )
{
var value = string
. Join ( separator , Regex . Matches ( input , @"/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g" ) )
. ToLower ( ) ;
return isSentence ? $ " { char . ToUpperInvariant ( value [ 0 ] ) } { value . Substring ( 1 ) } ." : value ;
}
}
} "someDatabaseFieldName" . FromCamelCase ( ) ; # "Some database field name."
"someLabelThatNeedsToBeCamelized" . FromCamelCase ( "-" , false ) ; # "some-label-that-needs-to-be-camelized"
"someJavascriptProperty" . FromCamelCase ( "_" , false ) ; # "some_javascript_property"
↑ zurück nach oben
Überprüft, ob eine Zeichenfolge ein Anagramm einer anderen Zeichenfolge ist (Fall-unempfindlich).
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static bool IsAnagramOf ( this string input , string compare ) => input . TransformToCompare ( ) == compare . TransformToCompare ( ) ;
private static string TransformToCompare ( this string input ) => string . Join ( string . Empty , input . ToLower ( ) . OrderBy ( x => x ) ) ;
}
} "iceman" . IsAnagramOf ( "cinema" ) ; # true
"icemAn" . IsAnagramOf ( "cinema" ; # true
"icem an" . IsAnagramOf ( "cinema" ; # false
"ic.EMan" . IsAnagramOf ( "cinema" ; # false
"icman" . IsAnagramOf ( "cinema" ; # false
↑ zurück nach oben
Überprüft, ob eine Zeichenfolge niedriger ist.
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static bool IsLower ( this string input ) => input == input . ToLower ( ) ;
}
} "abc" . IsLower ( ) ; # true
"a3@$" . IsLower ( ) ; # true
"Ab4" . IsLower ( ) ; # false
↑ zurück nach oben
Gibt true zurück, wenn die angegebene Zeichenfolge ein Palindrom ist, ansonsten false .
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static bool IsPalindrome ( this string input ) => input . ToLower ( ) == string . Join ( string . Empty , input . ToCharArray ( ) . Reverse ( ) ) . ToLower ( ) ;
}
} "tacocat" . IsPalindrome ( ) ; # true
"tAcocat" . IsPalindrome ( ) ; # true
"tacoca" . IsPalindrome ( ) ; # false
↑ zurück nach oben
Überprüft, ob eine Zeichenfolge oberes Gehäuse ist.
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static bool IsUpper ( this string input ) => input == input . ToUpper ( ) ;
}
} "ABC" . IsUpper ( ) ; # true
"A3@$" . IsUpper ( ) ; # true
"aB4" . IsUpper ( ) ; # false
↑ zurück nach oben
Ersetzt alle bis auf die letzte length der Zeichen durch das angegebene mask . Lassen Sie das zweite Argument, length , aus, um einen Standard von 4 Zeichen zu entlarven. Wenn length negativ ist, befinden sich die entlarvten Zeichen zu Beginn der Zeichenfolge. Lassen Sie das dritte Argument, mask , aus, um ein Standardcharakter von '*' für die Maske zu verwenden.
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static string Mask ( this string input , int length = 4 , char mask = '*' ) =>
length >= input . Length
? new string ( mask , input . Length )
: length >= 0
? input . Remove ( 0 , input . Length - length ) . Insert ( 0 , new string ( mask , input . Length - length ) )
: - length >= input . Length
? input
: input . Remove ( - length , input . Length + length ) . Insert ( - length , new string ( mask , input . Length + length ) ) ;
}
} "1234567890" . Mask ( ) ; # "******7890"
"1234567890" . Mask ( 3 ) ; # "*******890"
"1234567890" . Mask ( 0 ) ; # "**********"
"1234567890" . Mask ( - 4 ) ; # "1234******"
"1234567890" . Mask ( 20 , '-' ) ; # "----------"
"1234567890" . Mask ( - 20 , '-' ) ; # "1234567890"
↑ zurück nach oben
Pads eine Schnur auf beiden Seiten mit dem angegebenen Zeichen, wenn sie kürzer als die angegebene Länge ist. Verwenden Sie PadLeft() und PadRight() um beide Seiten der angegebenen Schnur zu padeln. Lassen Sie das dritte Argument, char , aus, um das Whitespace -Charakter als Standardpolstercharakter zu verwenden.
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static string Pad ( this string input , int length , char pad = ' ' ) => input . PadLeft ( ( input . Length + length ) / 2 , pad ) . PadRight ( length , pad ) ;
}
} "Hello World." . Pad ( 20 ) ; # " Hello World. "
"Hello World." . Pad ( 5 , '-' ) ; # "Hello World."
"Dog" . Pad ( 8 , ' ' ) ; # " Dog "
"42" . Pad ( 6 , '0' ) ; # "004200"
↑ zurück nach oben
Entfernt nicht druckbare ASCII-Zeichen. Verwenden Sie einen regulären Ausdruck, um nicht printbare ASCII-Zeichen zu entfernen.
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static string RemoveNonAscii ( this string input ) => Regex . Replace ( input , "[^ x20 - x7E ]" , "" ) ;
}
} "äÄçÇéÉêlorem ipsumöÖÐþúÚ" . RemoveNonAscii ( ) ; # "lorem ipsum"
↑ zurück nach oben
Kehrt eine Zeichenfolge um.
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static string Reverse ( this string input ) => string . Join ( string . Empty , input . ToCharArray ( ) . Reverse ( ) ) ;
}
} "My name is Jonas Schubert" . Reverse ( ) ; # "trebuhcS sanoJ si eman yM"
"!This is, maybe not, but important..." . Reverse ( ) ; # "...tnatropmi tub ,ton ebyam ,si sihT!"
↑ zurück nach oben
Teilt eine Multilin -Schnur in eine Reihe von Linien auf.
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static string [ ] SplitLines ( this string input ) => Regex . Split ( input , " r ? n " ) ;
}
} "This n is a n multiline n string. n " . SplitLines ( ) ; # n ew string [ ] { "This" , "is a" , "multiline" , "string." , "" }
↑ zurück nach oben
Überprüfen Sie, ob eine Zeichenfolge mit einem bestimmten Substring mit einem Regex beginnt.
Die Methode ausgenommen die zu testende Zeichenfolge und ein Substring, gegen das man testen muss.
Die meisten anderen Schecks sind bereits integriert.
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static bool StartsWithRegex ( this string input , string substring ) => new Regex ( $ "^ { substring } " ) . IsMatch ( input ) ;
}
} "Hello World" . StartsWithRegex ( @"[ehloEHLO]{5}$" ) # true
"Well, hello World" . StartsWithRegex ( @"[ehloEHLO]{5}$" ) # false
↑ zurück nach oben
Entfernt HTML/XML -Tags aus der String. Verwenden Sie einen regulären Ausdruck, um HTML/XML -Tags aus einer Zeichenfolge zu entfernen.
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static string StripHtmlTags ( this string input ) => Regex . Replace ( input , "<[^>]*>" , "" ) ;
}
} "<p><em>lorem</em> <strong>ipsum</strong></p>" . StripHtmlTags ( ) ; # "lorem ipsum"
"<div><br/>Hello <br />World</div>" . StripHtmlTags ( ) ; # "Hello World"
↑ zurück nach oben
Konvertiert eine Saite in Kamelcase.
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static string ToCamelCase ( this string input )
{
var value = string . Join ( string . Empty , Regex . Matches ( input , @"/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g" )
. Select ( x => $ " { x . Value . First ( ) . ToString ( ) . ToUpper ( ) } { x . Value . Substring ( 1 ) . ToLower ( ) } " ) ) ;
return char . ToLowerInvariant ( value [ 0 ] ) + value . Substring ( 1 ) ;
}
}
} "some_database_field_name" . ToCamelCase ( ) ; # "someDatabaseFieldName"
"Some label that needs to be camelized" . ToCamelCase ( ) ; # "someLabelThatNeedsToBeCamelized"
"some-javascript-property" . ToCamelCase ( ) ; # "someJavascriptProperty"
"some-mixed_string with spaces_underscores-and-hyphens" . ToCamelCase ( ) ; # "someMixedStringWithSpacesUnderscoresAndHyphens"
↑ zurück nach oben
Konvertiert eine Zeichenfolge in Kebab -Fall.
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static string ToKebabCase ( this string input ) =>
string . Join ( "-" , Regex . Matches ( input , @"/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g" ) . Select ( x => x . Value . ToLower ( ) ) ) ;
}
} "camelCase" . ToKebabCase ( ) ; # "camel-case"
"some text" . ToKebabCase ( ) ; # "some-text"
"some-mixed_string With spaces_underscores-and-hyphens" . ToKebabCase ( ) ; # "some-mixed-string-with-spaces-underscores-and-hyphens"
"AllThe-small Things" . ToKebabCase ( ) ; # "all-the-small-things"
"IAmListeningToFmWhileLoadingDifferentUrlOnMyBrowserAndAlsoEditingXmlAndHtml" . ToKebabCase ( ) ; # "i-am-listening-to-fm-while-loading-different-url-on-my-browser-and-also-editing-xml-and-html"
↑ zurück nach oben
Konvertiert eine Zeichenfolge in Schlangenkoffer.
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static string ToSnakeCase ( this string input ) =>
string . Join ( "_" , Regex . Matches ( input , @"/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g" ) . Select ( x => x . Value . ToLower ( ) ) ) ;
}
} "camelCase" . ToSnakeCase ( ) ; # "camel_case"
"some text" . ToSnakeCase ( ) ; # "some_text"
"some-mixed_string With spaces_underscores-and-hyphens" . ToSnakeCase ( ) ; # "some_mixed_string_with_spaces_underscores_and_hyphens"
"AllThe-small Things" . ToSnakeCase ( ) ; # "all_the_small_things"
"IAmListeningToFmWhileLoadingDifferentUrlOnMyBrowserAndAlsoEditingXmlAndHtml" . ToSnakeCase ( ) ; # "i_am_listening_to_fm_while_loading_different_url_on_my_browser_and_also_editing_xml_and_html"
↑ zurück nach oben
Konvertiert eine Zeichenfolge in den Titel.
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static string ToTitleCase ( this string input ) =>
string . Join ( " " , Regex . Matches ( input , @"/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g" )
. Select ( x => $ " { x . Value . First ( ) . ToString ( ) . ToUpper ( ) } { x . Value . Substring ( 1 ) . ToLower ( ) } " ) ) ;
}
} "some_database_field_name" . ToTitleCase ( ) ; # "Some Database Field Name"
"Some label that needs to be title-cased" . ToTitleCase ( ) ; # "Some Label That Needs To Be Title Cased"
"some-package-name" . ToTitleCase ( ) ; # "Some Package Name"
"some-mixed_string with spaces_underscores-and-hyphens" . ToTitleCase ( ) ; # "Some Mixed String With Spaces Underscores And Hyphens"
↑ zurück nach oben
Schneiden Sie eine Zeichenfolge auf eine bestimmte Länge ab.
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static string Truncate ( this string input , int maxLength ) =>
input . Length > maxLength ? $ " { input . Substring ( 0 , maxLength > 3 ? maxLength - 3 : maxLength ) } ..." : input ;
}
} "Hello World" . Truncate ( 4 ) ; # "H..."
"Hello World" . Truncate ( 12 ) ; # "Hello World"
↑ zurück nach oben
Konvertiert eine bestimmte Zeichenfolge in eine Liste von Wörtern.
namespace JonasSchubert . Snippets . String
{
public static partial class String
{
public static List < string > Words ( this string input , string pattern = @"w+[^s]*w+|w" ) =>
Regex . Matches ( input , pattern ) . Select ( x => x . Value ) . ToList ( ) ;
}
} "Hello World" . Words ( ) ; # n ew List < string > { "Hello" , "World" }
"Hello" . Words ( ) ; # n ew List < string > { "Hello" }
" " . Words ( ) ; # n ew List < string > ( )
↑ zurück nach oben
Überprüft, ob der angegebene Typ einen numerischen Typ ausmacht.
namespace JonasSchubert . Snippets . Type2
{
public static partial class Type2
{
public static bool IsNumericType ( this Type type )
{
switch ( Type . GetTypeCode ( type ) )
{
case TypeCode . Byte :
case TypeCode . SByte :
case TypeCode . UInt16 :
case TypeCode . UInt32 :
case TypeCode . UInt64 :
case TypeCode . Int16 :
case TypeCode . Int32 :
case TypeCode . Int64 :
case TypeCode . Decimal :
case TypeCode . Double :
case TypeCode . Single :
return true ;
default :
return false ;
}
}
}
} typeof ( sbyte ) . IsNumericType ( ) ; # true
typeof ( short ) . IsNumericType ( ) ; # true
typeof ( float ) . IsNumericType ( ) ; # true
typeof ( string ) . IsNumericType ( ) ; # false
typeof ( int [ ] ) . IsNumericType ( ) ; # false
↑ zurück nach oben
Erweitert einen 3-stelligen Farbcode auf einen 6-stelligen Farbcode.
namespace JonasSchubert . Snippets . Utility
{
public static partial class Utility
{
public static string ExtendHex ( this string hex ) =>
$ " { string . Join ( "" , ( hex . StartsWith ( '#' ) ? hex : $ "# { hex } " ) . Select ( x => x == '#' ? $ " { x } " : $ " { x } { x } " ) ) } " ;
}
} "#03f" . ExtendHex ( ) ; # "#0033ff"
"05a" . ExtendHex ( ) ; # "#0055aa"
↑ zurück nach oben
Konvertiert einen Farbcode in einen rgb() oder rgba() String, wenn der Alpha -Wert bereitgestellt wird.
namespace JonasSchubert . Snippets . Utility
{
public static partial class Utility
{
public static string HexToRgb ( string value )
{
value = value . Replace ( "#" , "" ) ;
var hasAlpha = value . Length == 8 ;
value = value . Length == 3 ? string . Join ( "" , value . Select ( x => $ " { x } { x } " ) ) : value ;
var valueAsInt = int . Parse ( value , NumberStyles . HexNumber ) ;
var red = valueAsInt >> ( hasAlpha ? 24 : 16 ) ;
var green = ( valueAsInt & ( hasAlpha ? 0x00ff0000 : 0x00ff00 ) ) >> ( hasAlpha ? 16 : 8 ) ;
var blue = ( valueAsInt & ( hasAlpha ? 0x0000ff00 : 0x0000ff ) ) >> ( hasAlpha ? 8 : 0 ) ;
var alpha = hasAlpha ? $ " { valueAsInt & 0x000000ff } " : null ;
return $ "rgb { ( hasAlpha ? "a" : "" ) } ( { red } , { green } , { blue } { ( hasAlpha ? $ ", { alpha } " : "" ) } )" ;
}
}
} Utility . HexToRgb ( "#fff" ) ; # "rgb(255, 255, 255)"
Utility . HexToRgb ( "#27ae60" ) ; # "rgb(39, 174, 96)"
Utility . HexToRgb ( "#27ae60ff" ) ; # "rgba(39, 174, 96, 255)"
↑ zurück nach oben
Konvertiert eine Zahl in Bytes in eine menschliche lesbare Zeichenfolge.
namespace JonasSchubert . Snippets . Utility
{
public static partial class Utility
{
public static string PrettyBytes ( ulong bytes )
{
var units = new string [ ] { "B" , "KB" , "MB" , "GB" , "TB" , "PB" , "EB" , "ZB" , "YB" } ;
var stringArray = units
. Select ( ( unit , index ) =>
Math . Floor ( bytes / Math . Pow ( 1e3 , index ) % 1e3 ) > 0
? $ " { Math . Floor ( bytes / Math . Pow ( 1e3 , index ) % 1e3 ) } { unit } { ( Math . Floor ( bytes / Math . Pow ( 1e3 , index ) % 1e3 ) > 1 ? "s" : string . Empty ) } "
: string . Empty )
. Where ( x => ! string . IsNullOrEmpty ( x ) )
. Reverse ( )
. ToArray ( ) ;
return stringArray . Length > 0
? string . Join ( ", " , stringArray )
: "0 B" ;
}
}
} Utility . PrettyBytes ( 0ul ) ; # "0 B"
Utility . PrettyBytes ( 1001ul ) ; # "1 KB, 1 B"
Utility . PrettyBytes ( 20000000000000000ul ) ; # "20 PBs"
Utility . PrettyBytes ( 1001001001ul ) ; # "1 GB, 1 MB, 1 KB, 1 B"
↑ zurück nach oben
Erzeugt eine zufällige hexadezimale Farbe.
namespace JonasSchubert . Snippets . Utility
{
public static partial class Utility
{
public static string RandomHexColor ( ) =>
$ "# { ( new Random ( ) . Next ( ) * 0xFFFFFF * 1000000 ) . ToString ( "X" ) . PadLeft ( 6 , '0' ) . Substring ( 0 , 6 ) } " ;
}
} Utility . RandomHexColor ( ) ; # "#01A5FF" ( e . g . )
↑ zurück nach oben
Konvertiert die Werte von RGB -Komponenten in einen Farbcode.
namespace JonasSchubert . Snippets . Utility
{
public static partial class Utility
{
public static string RgbToHex ( int red , int green , int blue ) =>
$ "# { ( ( red << 16 ) + ( green << 8 ) + blue ) . ToString ( "X" ) . PadLeft ( 6 , '0' ) } " ;
}
} Utility . RgbToHex ( 0 , 0 , 0 ) ; # "#000000"
Utility . RgbToHex ( 1 , 165 , 255 ) ; # "#01A5FF"
Utility . RgbToHex ( 255 , 255 , 255 ) ; # "#FFFFFF"
↑ zurück nach oben
Misst die Zeit, die von einer Funktion zur Ausführung benötigt wird.
Stoppuhr -Dokumentation hier.
namespace JonasSchubert . Snippets . Utility
{
public static partial class Utility
{
public static ( long , T1 ) TimeTaken < T1 > ( Func < T1 > func )
{
var watch = Stopwatch . StartNew ( ) ;
T1 result = func . Invoke ( ) ;
watch . Stop ( ) ;
return ( watch . ElapsedMilliseconds , result ) ;
}
}
} Utility . TimeTaken ( ( ) => true ) # 13.37m s , true
↑ zurück nach oben
Gibt true zurück, wenn die Zeichenfolge y / yes oder false ist, wenn die Zeichenfolge n / no ist.
namespace JonasSchubert . Snippets . Utility
{
public static partial class Utility
{
public static bool YesNo ( this string test , bool defaultVal = false ) =>
new Regex ( @"^(y|yes)$" , RegexOptions . IgnoreCase ) . IsMatch ( test )
? true
: new Regex ( @"^(n|no)$" , RegexOptions . IgnoreCase ) . IsMatch ( test )
? false
: defaultVal ;
}
} var empty = "" . YesNo ( ) ; # false
var yes = "yes" . YesNo ( ) ; # true
var y = "y" . YesNo ( ) ; # true
var NO = "NO" . YesNo ( ) ; # false
var nO = "nO" . YesNo ( ) ; # false
↑ zurück nach oben
Sie sind immer herzlich eingeladen, zu diesem Projekt beizutragen. Bitte lesen Sie den Beitragsleitfaden.
| Jonas Schubert | Denis Biondic |
30 Sekunden C# werden unter der MIT -Lizenz verteilt. Weitere Informationen finden Sie in Lizenz.
MIT License
Copyright (c) 2018 - 2020 JonasSchubert
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.