Convierte una matriz de objetos en una cadena de valores separados por comas (CSV) que contiene solo las columns especificadas.
// TODO // TODO
↑ De vuelta a la cima
Toma cualquier número de objetos u objetos iterables con una propiedad length y devuelve la más larga. Si varios objetos tienen la misma longitud, el primero se devolverá. Devoluciones -1 Si no se proporcionan argumentos.
// TODO // TODO
↑ De vuelta a la cima
Devuelve los n elementos máximos de la matriz proporcionada. Si n es mayor o igual a la longitud de la matriz proporcionada, entonces devuelva la matriz original (ordenada en orden descendente).
// TODO // TODO
↑ De vuelta a la cima
Devuelve los n elementos mínimos de la matriz proporcionada. Si n es mayor o igual a la longitud de la matriz proporcionada, entonces devuelva la matriz original (ordenada en orden ascendente).
// TODO // TODO
↑ De vuelta a la cima
Devuelve true si la función de predicado proporcionada devuelve false para todos los elementos en una colección, false de lo contrario.
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
↑ De vuelta a la cima
Devuelve el enésimo elemento de una matriz.
// TODO // TODO
↑ De vuelta a la cima
Mueve la cantidad especificada de elementos al final de la matriz.
// TODO // TODO
↑ De vuelta a la cima
Clasifica una colección de matrices.
// TODO // TODO
↑ De vuelta a la cima
Agrupe los elementos en dos matrices, dependiendo de la veracidad de la función proporcionada para cada elemento.
// TODO // TODO
↑ De vuelta a la cima
Genera todas las permutaciones de los elementos de una matriz (contiene duplicados).
// TODO // TODO
↑ De vuelta a la cima
Recupera todos los valores para una clave dada.
// TODO // TODO
↑ De vuelta a la cima
Muta la matriz original para filtrar los valores especificados.
// TODO // TODO
↑ De vuelta a la cima
Muta la matriz original para filtrar los valores en los índices especificados.
// TODO // TODO
↑ De vuelta a la cima
Muta la matriz original para filtrar los valores especificados. Devuelve los elementos eliminados.
// TODO // TODO
↑ De vuelta a la cima
Muta la matriz original para filtrar los valores especificados, en función de una función iteradora determinada.
// TODO // TODO
↑ De vuelta a la cima
Filtre una matriz de objetos basados en una condición al tiempo que filtra las teclas no especificadas.
// TODO // TODO
↑ De vuelta a la cima
Aplica una función contra un acumulador y cada elemento en la matriz (de izquierda a derecha), devolviendo una matriz de valores reducidos sucesivamente.
// TODO // TODO
↑ De vuelta a la cima
Devuelve el valor mínimo/máximo de una matriz, después de aplicar la función proporcionada para establecer la regla de comparación.
// TODO // TODO
↑ De vuelta a la cima
Toma un predicado y una matriz, como Array.prototype.filter() , pero solo mantiene x si pred(x) === false .
// TODO // TODO
↑ De vuelta a la cima
Elimina elementos de una matriz para la cual la función dada devuelve false .
// TODO // TODO
↑ De vuelta a la cima
Devuelve un elemento aleatorio de una matriz.
// TODO // TODO
↑ De vuelta a la cima
Obtiene n elementos aleatorios en claves únicas desde array hasta el tamaño de array .
// TODO // TODO
↑ De vuelta a la cima
Este método cambia el contenido de una matriz eliminando los elementos existentes y/o agregando nuevos elementos. Similar a la versión de JavaScript Array.prototype.splice()
// TODO // TODO
↑ De vuelta a la cima
Aleatoriza el orden de los valores de una matriz, devolviendo una nueva matriz.
// TODO // TODO
↑ De vuelta a la cima
Devuelve una variedad de elementos que aparecen en ambas matrices.
// TODO // TODO
↑ De vuelta a la cima
Devuelve Direction.Ascending Casando si el enumerable se clasifica en orden ascendente, Direction.Descending Descendiendo si se clasifica en orden descendente o Direction.NotSorted Notada si no está ordenado o solo tiene un valor.
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 ;
}
}
}Usa enum jonasschubert.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
↑ De vuelta a la cima
Devuelve el índice más bajo en el que se debe insertar el valor en la matriz para mantener su orden de clasificación.
// TODO // TODO
↑ De vuelta a la cima
Devuelve el índice más bajo en el que se debe insertar el valor en la matriz para mantener su orden de clasificación, en función de una función iteradora proporcionada.
// TODO // TODO
↑ De vuelta a la cima
Devuelve el índice más alto en el que se debe insertar el valor en la matriz para mantener su orden de clasificación.
// TODO // TODO
↑ De vuelta a la cima
Devuelve el índice más alto en el que se debe insertar el valor en la matriz para mantener su orden de clasificación, en función de una función iteradora proporcionada.
// TODO // TODO
↑ De vuelta a la cima
Realiza la clasificación estable de una matriz, preservando los índices iniciales de elementos cuando sus valores son los mismos. No muta la matriz original, sino que devuelve una nueva matriz.
// TODO // TODO
↑ De vuelta a la cima
Devuelve la diferencia simétrica entre dos matrices, sin filtrar valores duplicados.
// TODO // TODO
↑ De vuelta a la cima
Devuelve la diferencia simétrica entre dos matrices, después de aplicar la función proporcionada a cada elemento de matriz de ambos.
// TODO // TODO
↑ De vuelta a la cima
Devuelve la diferencia simétrica entre dos matrices, utilizando una función proporcionada como comparador.
// TODO // TODO
↑ De vuelta a la cima
Devuelve todos los elementos en una matriz, excepto el primero.
// TODO // TODO
↑ De vuelta a la cima
Devuelve una matriz con n elementos eliminados del principio.
// TODO // TODO
↑ De vuelta a la cima
Devuelve una matriz con n elementos eliminados del final.
// TODO // TODO
↑ De vuelta a la cima
Elimina elementos del final de una matriz hasta que la función pasada devuelve true . Devuelve los elementos eliminados.
// TODO // TODO
↑ De vuelta a la cima
Elimina elementos en una matriz hasta que la función pasada devuelve true . Devuelve los elementos eliminados.
// TODO // TODO
↑ De vuelta a la cima
Convierte una enumerable 2D en una cadena de valores separados por comas (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"
↑ De vuelta a la cima
Reduce una matriz determinada en un hash de valor (almacén de datos clave).
// TODO // TODO
↑ De vuelta a la cima
Devuelve cada elemento que existe en cualquiera de las dos matrices una vez.
// TODO // TODO
↑ De vuelta a la cima
Devuelve cada elemento que existe en cualquiera de las dos matrices una vez, después de aplicar la función proporcionada a cada elemento de matriz de ambos.
// TODO // TODO
↑ De vuelta a la cima
Devuelve cada elemento que existe en cualquiera de las dos matrices una vez, utilizando una función de comparación proporcionada.
// TODO // TODO
↑ De vuelta a la cima
Devuelve todos los valores únicos de una matriz.
// TODO // TODO
↑ De vuelta a la cima
Devuelve todos los valores únicos de una matriz, basado en una función de comparación proporcionada.
// TODO // TODO
↑ De vuelta a la cima
Devuelve todos los valores únicos de una matriz, basado en una función de comparación proporcionada.
// TODO // TODO
↑ De vuelta a la cima
Devuelve la diferencia simétrica única entre dos matrices, que no contienen valores duplicados de ninguna matriz.
// TODO // TODO
↑ De vuelta a la cima
Filma los elementos de una matriz, que tienen uno de los valores especificados.
// TODO // TODO
↑ De vuelta a la cima
Crea una nueva matriz de los dos suministrados creando cada par posible a partir de las matrices.
// TODO // TODO
↑ De vuelta a la cima
Verificaciones si dos números son aproximadamente iguales entre sí.
// TODO // TODO
↑ De vuelta a la cima
Devuelve el promedio de dos o más números.
El método excepto los números como parámetros y devuelve el promedio como resultado.
Documentación de Linq aquí.
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
↑ De vuelta a la cima
Devuelve el promedio de una matriz, después de asignar cada elemento a un valor utilizando la función proporcionada.
// TODO // TODO
↑ De vuelta a la cima
Evalúa el coeficiente binomial de dos enteros n y k .
// TODO // TODO
↑ De vuelta a la cima
Convierte un ángulo de grados a radianes.
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
↑ De vuelta a la cima
Convierte un número en una variedad de dígitos.
// TODO // TODO
↑ De vuelta a la cima
Devuelve la distancia entre dos puntos.
// TODO // TODO
↑ De vuelta a la cima
Calcula el factorial de un número.
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
↑ De vuelta a la cima
Genera una lista, que contiene la secuencia de Fibonacci, hasta el enésimo término.
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 }
↑ De vuelta a la cima
Calcula el mayor divisor común entre dos o más números/matrices.
// TODO // TODO
↑ De vuelta a la cima
Inicializa una matriz que contiene los números en el rango especificado donde start y end son inclusivos y la relación entre dos términos es step . Devuelve un error si step es igual a 1 .
// TODO // TODO
↑ De vuelta a la cima
Comprueba si el número dado cae dentro del rango dado.
// TODO // TODO
↑ De vuelta a la cima
Comprueba si el número es divisible por otro número.
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
↑ De vuelta a la cima
Devuelve true si el número dado es uniforme, false de lo contrario.
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
↑ De vuelta a la cima
Comprueba si el número entero proporcionado es un número primo.
// TODO // TODO
↑ De vuelta a la cima
Devuelve true si el número dado es impar, false de lo contrario.
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
↑ De vuelta a la cima
Devuelve el múltiplo menos común de dos o más números.
// TODO // TODO
↑ De vuelta a la cima
Implementación del algoritmo Luhn utilizado para validar una variedad de números de identificación, como números de tarjetas de crédito, números de IMEI, números de identificadores nacionales, etc.
// TODO // TODO
↑ De vuelta a la cima
Devuelve el valor máximo del enumerable proporcionado.
// TODO // TODO
↑ De vuelta a la cima
Devuelve la mediana de una matriz de números.
// TODO // TODO
↑ De vuelta a la cima
Devuelve el valor mínimo del enumerable proporcionado.
// TODO // TODO
↑ De vuelta a la cima
Genera primos hasta un número determinado, utilizando el tamiz de Eratosthenes.
// TODO // TODO
↑ De vuelta a la cima
Convierte un ángulo de radianes en grados.
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
↑ De vuelta a la cima
Devuelve una matriz de n enteros aleatorios en el rango especificado.
// TODO // TODO
↑ De vuelta a la cima
Devuelve un entero aleatorio en el rango especificado.
// TODO // TODO
↑ De vuelta a la cima
Devuelve un número aleatorio en el rango especificado.
// TODO // TODO
↑ De vuelta a la cima
Redondea un número a una cantidad específica de dígitos.
// TODO // TODO
↑ De vuelta a la cima
Hashes la cadena de entrada en un número entero.
// TODO // TODO
↑ De vuelta a la cima
Devuelve la desviación estándar de una matriz de números.
// TODO // TODO
↑ De vuelta a la cima
Devuelve la suma de dos o más números/matrices.
// TODO // TODO
↑ De vuelta a la cima
Devuelve la suma de una matriz, después de asignar cada elemento a un valor utilizando la función proporcionada.
// TODO // TODO
↑ De vuelta a la cima
Devuelve el número de veces una función ejecutada por segundo. hz es la unidad para hertz , la unidad de frecuencia definida como un ciclo por segundo.
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 ) ;
↑ De vuelta a la cima
Itera sobre una devolución de llamada n veces
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
↑ De vuelta a la cima
Devuelve la longitud de una cadena en bytes.
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
↑ De vuelta a la cima
Devuelve el número de vocales en la cadena proporcionada.
"" . ByteSize ( ) ; # 0
"Hello World" . ByteSize ( ) ; # 11
"Hello World" . ByteSizeUnicode ( ) ; # 22
"Hello World" . ByteSizeUtf32 ( ) ; # 44
"This is 30 seconds of C." . ByteSizeBigEndianUnicode ( ) ; # 48 // TODO
↑ De vuelta a la cima
Convierte una cadena de valores separados por comas (CSV) en una matriz 2D.
// TODO // TODO
↑ De vuelta a la cima
Convierte una cadena de valores separados por comas (CSV) en una matriz 2D de objetos. La primera fila de la cadena se usa como la fila de título.
// TODO // TODO
↑ De vuelta a la cima
Verifique si una cadena termina con una subcadena dada usando una regex.
El método excepto la cadena para probar y una subcadena para probar.
La mayoría de los otros cheques ya están integrados.
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
↑ De vuelta a la cima
Convierte una cuerda de CamelCase. Hace todas las palabras en minúsculas y las combina usando un separador proporcionado (el valor predeterminado es un espacio en blanco). Del param issentence == Verdadero, la primera letra de la oración será superior y se agregará un punto al final (el valor predeterminado es verdadero).
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"
↑ De vuelta a la cima
Comprueba si una cadena es un anagrama de otra cadena (caso insensible).
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
↑ De vuelta a la cima
Comprueba si una cadena es minúscula.
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
↑ De vuelta a la cima
Devuelve true si la cadena dada es un palíndromo, false de lo contrario.
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
↑ De vuelta a la cima
Comprueba si una cadena es la caja superior.
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
↑ De vuelta a la cima
Reemplaza todos menos la última length de los caracteres con el carácter mask especificado. Omita el segundo argumento, length , para mantener un valor predeterminado de 4 caracteres desenmascarados. Si length es negativa, los caracteres desenmascarados estarán al comienzo de la cadena. Omita el tercer argumento, mask , para usar un carácter predeterminado de '*' para la máscara.
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"
↑ De vuelta a la cima
Padea una cadena en ambos lados con el carácter especificado, si es más corto que la longitud especificada. Use PadLeft() y PadRight() para rellenar ambos lados de la cadena dada. Omita el tercer argumento, char , para usar el carácter Whitespace como el carácter de relleno predeterminado.
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"
↑ De vuelta a la cima
Elimina caracteres ASCII no imprimibles. Use una expresión regular para eliminar los caracteres ASCII no imprimibles.
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"
↑ De vuelta a la cima
Invierte una cadena.
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!"
↑ De vuelta a la cima
Divide una cadena multilínea en una matriz de líneas.
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." , "" }
↑ De vuelta a la cima
Verifique si una cadena comienza con una subcadena dada usando una regex.
El método excepto la cadena para probar y una subcadena para probar.
La mayoría de los otros cheques ya están integrados.
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
↑ De vuelta a la cima
Elimina etiquetas HTML/XML de String. Use una expresión regular para eliminar las etiquetas HTML/XML de una cadena.
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"
↑ De vuelta a la cima
Convierte una cuerda en camelcase.
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"
↑ De vuelta a la cima
Convierte una cadena en el caso Kebab.
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"
↑ De vuelta a la cima
Convierte una cadena en caso de serpiente.
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"
↑ De vuelta a la cima
Convierte una cadena en caso de título.
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"
↑ De vuelta a la cima
Trunca una cadena hasta una longitud especificada.
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"
↑ De vuelta a la cima
Convierte una cadena dada en una lista de palabras.
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 > ( )
↑ De vuelta a la cima
Comprueba si el tipo proporcionado es de un tipo numérico.
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
↑ De vuelta a la cima
Extiende un código de color de 3 dígitos a un código de color de 6 dígitos.
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"
↑ De vuelta a la cima
Convierte un código de color en una cadena rgb() o rgba() si se proporciona valor alfa.
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)"
↑ De vuelta a la cima
Convierte un número en bytes en una cadena legible por humanos.
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"
↑ De vuelta a la cima
Genera un color hexadecimal aleatorio.
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 . )
↑ De vuelta a la cima
Convierte los valores de los componentes RGB en un código de color.
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"
↑ De vuelta a la cima
Mide el tiempo tomado por una función para ejecutar.
Documentación del cronómetro aquí.
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
↑ De vuelta a la cima
Devuelve true si la cadena es y y yes o false si la cadena es n / no .
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
↑ De vuelta a la cima
Siempre eres bienvenido a contribuir a este proyecto. Lea la guía de contribución.
| Jonas Schubert | Denis Biondic |
30 segundos de C# se distribuyen bajo la licencia MIT. Vea la licencia para más detalles.
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.