Mengubah array objek menjadi string nilai-nilai yang dipisahkan koma (CSV) yang hanya berisi columns yang ditentukan.
// TODO // TODO
↑ kembali ke atas
Mengambil sejumlah objek atau objek yang dapat diulang dengan properti length dan mengembalikan yang terpanjang. Jika banyak objek memiliki panjang yang sama, yang pertama akan dikembalikan. Pengembalian -1 Jika tidak ada argumen yang disediakan.
// TODO // TODO
↑ kembali ke atas
Mengembalikan elemen maksimum n dari array yang disediakan. Jika n lebih besar dari atau sama dengan panjang array yang disediakan, maka kembalikan array asli (diurutkan dalam urutan menurun).
// TODO // TODO
↑ kembali ke atas
Mengembalikan elemen minimum n dari array yang disediakan. Jika n lebih besar dari atau sama dengan panjang array yang disediakan, maka kembalikan array asli (diurutkan dalam urutan naik).
// TODO // TODO
↑ kembali ke atas
Mengembalikan true jika fungsi predikat yang disediakan mengembalikan false untuk semua elemen dalam koleksi, false sebaliknya.
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
↑ kembali ke atas
Mengembalikan elemen ke -n dari suatu array.
// TODO // TODO
↑ kembali ke atas
Menggerakkan jumlah elemen yang ditentukan ke akhir array.
// TODO // TODO
↑ kembali ke atas
Mengurutkan koleksi array.
// TODO // TODO
↑ kembali ke atas
Mengelompokkan elemen menjadi dua array, tergantung pada kebenaran fungsi yang disediakan untuk setiap elemen.
// TODO // TODO
↑ kembali ke atas
Menghasilkan semua permutasi elemen array (berisi duplikat).
// TODO // TODO
↑ kembali ke atas
Mengambil semua nilai untuk kunci yang diberikan.
// TODO // TODO
↑ kembali ke atas
Mutasi array asli untuk memfilter nilai yang ditentukan.
// TODO // TODO
↑ kembali ke atas
Mutasi array asli untuk memfilter nilai pada indeks yang ditentukan.
// TODO // TODO
↑ kembali ke atas
Mutasi array asli untuk memfilter nilai yang ditentukan. Mengembalikan elemen yang dihapus.
// TODO // TODO
↑ kembali ke atas
Mutasi array asli untuk memfilter nilai yang ditentukan, berdasarkan fungsi iterator yang diberikan.
// TODO // TODO
↑ kembali ke atas
Saring array objek berdasarkan kondisi sementara juga menyaring tombol yang tidak ditentukan.
// TODO // TODO
↑ kembali ke atas
Menerapkan fungsi terhadap akumulator dan setiap elemen dalam array (dari kiri ke kanan), mengembalikan array nilai yang dikurangi secara berturut -turut.
// TODO // TODO
↑ kembali ke atas
Mengembalikan nilai minimum/maksimum suatu array, setelah menerapkan fungsi yang disediakan untuk menetapkan aturan pembanding.
// TODO // TODO
↑ kembali ke atas
Mengambil predikat dan array, seperti Array.prototype.filter() , tetapi hanya menyimpan x jika pred(x) === false .
// TODO // TODO
↑ kembali ke atas
Menghapus elemen dari array yang fungsi yang diberikan mengembalikan false .
// TODO // TODO
↑ kembali ke atas
Mengembalikan elemen acak dari array.
// TODO // TODO
↑ kembali ke atas
Mendapat n elemen acak pada kunci unik dari array hingga ukuran array .
// TODO // TODO
↑ kembali ke atas
Metode ini mengubah isi array dengan menghapus elemen yang ada dan/atau menambahkan elemen baru. Mirip dengan versi javascript Array.prototype.splice()
// TODO // TODO
↑ kembali ke atas
Mengacak urutan nilai array, mengembalikan array baru.
// TODO // TODO
↑ kembali ke atas
Mengembalikan berbagai elemen yang muncul di kedua array.
// TODO // TODO
↑ kembali ke atas
Mengembalikan Direction.Ascending Jika enumerable diurutkan dalam urutan menaik, Direction.Descending Menurunkan jika diurutkan dalam urutan atau Direction.NotSorted yang menurun. Dipertahankan jika tidak diurutkan atau hanya memiliki satu nilai.
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 ;
}
}
}Menggunakan 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
↑ kembali ke atas
Mengembalikan indeks terendah di mana nilai harus dimasukkan ke dalam array untuk mempertahankan urutan pengurutannya.
// TODO // TODO
↑ kembali ke atas
Mengembalikan indeks terendah di mana nilai harus dimasukkan ke dalam array untuk mempertahankan urutan pengurutannya, berdasarkan fungsi iterator yang disediakan.
// TODO // TODO
↑ kembali ke atas
Mengembalikan indeks tertinggi di mana nilai harus dimasukkan ke dalam array untuk mempertahankan urutan pengurutannya.
// TODO // TODO
↑ kembali ke atas
Mengembalikan indeks tertinggi di mana nilai harus dimasukkan ke dalam array untuk mempertahankan urutan pengurutannya, berdasarkan fungsi iterator yang disediakan.
// TODO // TODO
↑ kembali ke atas
Melakukan penyortiran array yang stabil, melestarikan indeks awal item ketika nilainya sama. Tidak bermutasi array asli, tetapi mengembalikan array baru sebagai gantinya.
// TODO // TODO
↑ kembali ke atas
Mengembalikan perbedaan simetris antara dua array, tanpa memfilter nilai duplikat.
// TODO // TODO
↑ kembali ke atas
Mengembalikan perbedaan simetris antara dua array, setelah menerapkan fungsi yang disediakan untuk setiap elemen array dari keduanya.
// TODO // TODO
↑ kembali ke atas
Mengembalikan perbedaan simetris antara dua array, menggunakan fungsi yang disediakan sebagai pembanding.
// TODO // TODO
↑ kembali ke atas
Mengembalikan semua elemen dalam array kecuali yang pertama.
// TODO // TODO
↑ kembali ke atas
Mengembalikan array dengan N elemen yang dihapus dari awal.
// TODO // TODO
↑ kembali ke atas
Mengembalikan array dengan N elemen yang dihapus dari ujung.
// TODO // TODO
↑ kembali ke atas
Menghapus elemen dari akhir array sampai fungsi yang dilewatkan mengembalikan true . Mengembalikan elemen yang dihapus.
// TODO // TODO
↑ kembali ke atas
Menghapus elemen dalam array sampai fungsi yang dilewati mengembalikan true . Mengembalikan elemen yang dihapus.
// TODO // TODO
↑ kembali ke atas
Konversi 2D yang dihitung menjadi string nilai-nilai yang dipisahkan koma (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"
↑ kembali ke atas
Mengurangi array yang diberikan menjadi hash nilai (penyimpanan data terkunci).
// TODO // TODO
↑ kembali ke atas
Mengembalikan setiap elemen yang ada di salah satu dari dua array sekali.
// TODO // TODO
↑ kembali ke atas
Mengembalikan setiap elemen yang ada di salah satu dari dua array sekali, setelah menerapkan fungsi yang disediakan untuk setiap elemen array dari keduanya.
// TODO // TODO
↑ kembali ke atas
Mengembalikan setiap elemen yang ada di salah satu dari dua array sekali, menggunakan fungsi pembanding yang disediakan.
// TODO // TODO
↑ kembali ke atas
Mengembalikan semua nilai unik dari suatu array.
// TODO // TODO
↑ kembali ke atas
Mengembalikan semua nilai unik dari suatu array, berdasarkan fungsi pembanding yang disediakan.
// TODO // TODO
↑ kembali ke atas
Mengembalikan semua nilai unik dari suatu array, berdasarkan fungsi pembanding yang disediakan.
// TODO // TODO
↑ kembali ke atas
Mengembalikan perbedaan simetris unik antara dua array, tidak mengandung nilai duplikat dari kedua array.
// TODO // TODO
↑ kembali ke atas
Menyaring elemen -elemen array, yang memiliki salah satu nilai yang ditentukan.
// TODO // TODO
↑ kembali ke atas
Membuat array baru dari dua yang disediakan dengan menciptakan setiap pasangan yang mungkin dari array.
// TODO // TODO
↑ kembali ke atas
Memeriksa apakah dua angka kira -kira sama satu sama lain.
// TODO // TODO
↑ kembali ke atas
Mengembalikan rata -rata dua atau lebih angka.
Metode ini mengecilkan angka sebagai params dan mengembalikan rata -rata sebagai hasilnya.
Dokumentasi LINQ di sini.
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
↑ kembali ke atas
Mengembalikan rata -rata array, setelah memetakan setiap elemen ke nilai menggunakan fungsi yang disediakan.
// TODO // TODO
↑ kembali ke atas
Mengevaluasi koefisien binomial dari dua bilangan bulat n dan k .
// TODO // TODO
↑ kembali ke atas
Mengubah sudut dari derajat menjadi radian.
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
↑ kembali ke atas
Mengubah angka ke berbagai digit.
// TODO // TODO
↑ kembali ke atas
Mengembalikan jarak antara dua titik.
// TODO // TODO
↑ kembali ke atas
Menghitung faktorial angka.
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
↑ kembali ke atas
Menghasilkan daftar, berisi urutan fibonacci, hingga istilah ke -n.
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 }
↑ kembali ke atas
Menghitung pembagi umum terbesar antara dua atau lebih angka/array.
// TODO // TODO
↑ kembali ke atas
Menginisialisasi array yang berisi angka -angka dalam kisaran yang ditentukan di mana start dan end inklusif dan rasio antara dua istilah adalah step . Mengembalikan kesalahan jika step sama dengan 1 .
// TODO // TODO
↑ kembali ke atas
Memeriksa apakah nomor yang diberikan berada dalam kisaran yang diberikan.
// TODO // TODO
↑ kembali ke atas
Memeriksa apakah angka A dibagi dengan nomor lain.
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
↑ kembali ke atas
Mengembalikan true jika nomor yang diberikan bahkan, false sebaliknya.
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
↑ kembali ke atas
Memeriksa apakah bilangan bulat yang disediakan adalah bilangan prima.
// TODO // TODO
↑ kembali ke atas
Mengembalikan true jika nomor yang diberikan ganjil, false sebaliknya.
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
↑ kembali ke atas
Mengembalikan kelipatan paling tidak umum dari dua angka atau lebih.
// TODO // TODO
↑ kembali ke atas
Implementasi algoritma LUHN yang digunakan untuk memvalidasi berbagai nomor identifikasi, seperti nomor kartu kredit, nomor IMEI, nomor pengidentifikasi penyedia nasional dll.
// TODO // TODO
↑ kembali ke atas
Mengembalikan nilai maksimum dari yang disediakan oleh yang disediakan.
// TODO // TODO
↑ kembali ke atas
Mengembalikan median berbagai angka.
// TODO // TODO
↑ kembali ke atas
Mengembalikan nilai minimum dari yang diberikan.
// TODO // TODO
↑ kembali ke atas
Menghasilkan bilangan prima hingga nomor tertentu, menggunakan saringan eratosthenes.
// TODO // TODO
↑ kembali ke atas
Mengubah sudut dari radian ke derajat.
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
↑ kembali ke atas
Mengembalikan array n bilangan bulat acak dalam kisaran yang ditentukan.
// TODO // TODO
↑ kembali ke atas
Mengembalikan bilangan bulat acak dalam kisaran yang ditentukan.
// TODO // TODO
↑ kembali ke atas
Mengembalikan nomor acak dalam kisaran yang ditentukan.
// TODO // TODO
↑ kembali ke atas
Putaran angka ke jumlah digit yang ditentukan.
// TODO // TODO
↑ kembali ke atas
Hash string input ke dalam bilangan bulat.
// TODO // TODO
↑ kembali ke atas
Mengembalikan standar deviasi serangkaian angka.
// TODO // TODO
↑ kembali ke atas
Mengembalikan jumlah dua atau lebih angka/array.
// TODO // TODO
↑ kembali ke atas
Mengembalikan jumlah array, setelah memetakan setiap elemen ke nilai menggunakan fungsi yang disediakan.
// TODO // TODO
↑ kembali ke atas
Mengembalikan berapa kali fungsi yang dieksekusi per detik. hz adalah unit untuk hertz , unit frekuensi didefinisikan sebagai satu siklus per detik.
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 ) ;
↑ kembali ke atas
Mengulangi panggilan balik n kali
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
↑ kembali ke atas
Mengembalikan panjang string dalam byte.
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
↑ kembali ke atas
Mengembalikan jumlah vokal dalam string yang disediakan.
"" . ByteSize ( ) ; # 0
"Hello World" . ByteSize ( ) ; # 11
"Hello World" . ByteSizeUnicode ( ) ; # 22
"Hello World" . ByteSizeUtf32 ( ) ; # 44
"This is 30 seconds of C." . ByteSizeBigEndianUnicode ( ) ; # 48 // TODO
↑ kembali ke atas
Mengubah string nilai yang dipisahkan koma (CSV) ke array 2D.
// TODO // TODO
↑ kembali ke atas
Mengubah string nilai-nilai yang dipisahkan koma (CSV) ke array objek 2D. Baris pertama string digunakan sebagai baris judul.
// TODO // TODO
↑ kembali ke atas
Periksa apakah string berakhir dengan substring yang diberikan menggunakan regex.
Metode ini mengecilkan string untuk menguji dan substring untuk diuji.
Sebagian besar cek lainnya sudah terintegrasi.
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
↑ kembali ke atas
Konversi string dari Camelcase. Membuat semua kata huruf kecil dan menggabungkannya menggunakan pemisah yang disediakan (default adalah satu whitespace). Dari Param Issentence == Benar, huruf pertama dari kalimat akan menjadi huruf besar dan titik akan ditambahkan di akhir (default adalah benar).
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"
↑ kembali ke atas
Periksa apakah string adalah anagram dari string lain (case-non-sensitive).
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
↑ kembali ke atas
Memeriksa apakah string adalah huruf kecil.
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
↑ kembali ke atas
Mengembalikan true jika string yang diberikan adalah palindrome, false sebaliknya.
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
↑ kembali ke atas
Periksa apakah string adalah huruf besar.
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
↑ kembali ke atas
Menggantikan semua kecuali length karakter terakhir dengan karakter mask yang ditentukan. Hilangkan argumen kedua, length , untuk menjaga default 4 karakter terbuka kedok. Jika length negatif, karakter yang terbuka kedok akan berada di awal string. Hilangkan argumen ketiga, mask , untuk menggunakan karakter default '*' untuk topeng.
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"
↑ kembali ke atas
Bantalan string di kedua sisi dengan karakter yang ditentukan, jika lebih pendek dari panjang yang ditentukan. Gunakan PadLeft() dan PadRight() untuk meletakkan kedua sisi dari string yang diberikan. Hilangkan argumen ketiga, char , untuk menggunakan karakter whitespace sebagai karakter padding default.
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"
↑ kembali ke atas
Menghapus karakter ASCII yang tidak dapat dicetak. Gunakan ekspresi reguler untuk menghapus karakter ASCII yang tidak dapat dicetak.
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"
↑ kembali ke atas
Membalikkan string.
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!"
↑ kembali ke atas
Membagi string multiline menjadi array garis.
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." , "" }
↑ kembali ke atas
Periksa apakah string dimulai dengan substring yang diberikan menggunakan regex.
Metode ini mengecilkan string untuk menguji dan substring untuk diuji.
Sebagian besar cek lainnya sudah terintegrasi.
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
↑ kembali ke atas
Menghapus tag html/xml dari string. Gunakan ekspresi reguler untuk menghapus tag HTML/XML dari string.
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"
↑ kembali ke atas
Mengubah string ke 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"
↑ kembali ke atas
Konversi string ke kasus 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"
↑ kembali ke atas
Mengonversi casing string ke ular.
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"
↑ kembali ke atas
Mengubah string ke casing judul.
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"
↑ kembali ke atas
Memotong string hingga panjang yang ditentukan.
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"
↑ kembali ke atas
Mengubah string yang diberikan menjadi daftar kata.
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 > ( )
↑ kembali ke atas
Periksa apakah jenis yang disediakan adalah jenis numerik.
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
↑ kembali ke atas
Memperluas kode warna 3 digit ke kode warna 6 digit.
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"
↑ kembali ke atas
Mengubah kode warna ke string rgb() atau rgba() jika nilai alfa disediakan.
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)"
↑ kembali ke atas
Mengubah angka dalam byte menjadi string yang dapat dibaca manusia.
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"
↑ kembali ke atas
Menghasilkan warna heksadesimal acak.
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 . )
↑ kembali ke atas
Mengubah nilai komponen RGB menjadi kode warna.
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"
↑ kembali ke atas
Mengukur waktu yang diambil oleh fungsi untuk dieksekusi.
Dokumentasi Stopwatch di sini.
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
↑ kembali ke atas
Mengembalikan true jika string itu y / yes atau false jika string adalah 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
↑ kembali ke atas
Anda selalu dipersilakan untuk berkontribusi pada proyek ini. Harap baca panduan kontribusi.
| Jonas Schubert | Denis Biondic |
30 detik C# didistribusikan di bawah lisensi MIT. Lihat lisensi untuk detailnya.
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.