يحول مجموعة من الكائنات إلى سلسلة قيم مفصولة (CSV) التي تحتوي على columns المحددة فقط.
// TODO // TODO
↑ العودة إلى الأعلى
يأخذ أي عدد من الكائنات أو الكائنات التي لا يمكن أن تكون مع خاصية length وإرجاع الأطول. إذا كانت الكائنات المتعددة لها نفس الطول ، فسيتم إرجاع أول كائنات. الإرجاع -1 إذا لم يتم تقديم وسيطات.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع العناصر القصوى n من الصفيف المقدم. إذا كان n أكبر من أو يساوي طول المصفوفة المقدمة ، فقم بإرجاع الصفيف الأصلي (مرتبة بترتيب تنازلي).
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع العناصر الدنيا n من الصفيف المقدم. إذا كان n أكبر من أو يساوي طول الصفيف المقدم ، فقم بإرجاع الصفيف الأصلي (مرتبة بترتيب تصاعدي).
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع true إذا كانت الدالة المسند المقدمة تعيد false لجميع العناصر في مجموعة ، 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
↑ العودة إلى الأعلى
إرجاع العنصر التاسع من صفيف.
// TODO // TODO
↑ العودة إلى الأعلى
ينقل الكمية المحددة من العناصر إلى نهاية الصفيف.
// TODO // TODO
↑ العودة إلى الأعلى
فرز مجموعة من المصفوفات.
// TODO // TODO
↑ العودة إلى الأعلى
مجموعات العناصر في صفائف ، اعتمادًا على صحة الوظيفة المقدمة لكل عنصر.
// TODO // TODO
↑ العودة إلى الأعلى
يولد جميع التباديل لعناصر الصفيف (يحتوي على التكرارات).
// TODO // TODO
↑ العودة إلى الأعلى
يسترجع جميع القيم لمفتاح معين.
// TODO // TODO
↑ العودة إلى الأعلى
يتحول الصفيف الأصلي لتصفية القيم المحددة.
// TODO // TODO
↑ العودة إلى الأعلى
يتحول الصفيف الأصلي لتصفية القيم في الفهارس المحددة.
// TODO // TODO
↑ العودة إلى الأعلى
يتحول الصفيف الأصلي لتصفية القيم المحددة. إرجاع العناصر التي تمت إزالتها.
// TODO // TODO
↑ العودة إلى الأعلى
يتحول الصفيف الأصلي لتصفية القيم المحددة ، استنادًا إلى وظيفة Iterator معينة.
// TODO // TODO
↑ العودة إلى الأعلى
قم بتصفية مجموعة من الكائنات بناءً على شرط أثناء تصفية المفاتيح غير المحددة أيضًا.
// TODO // TODO
↑ العودة إلى الأعلى
يطبق وظيفة ضد تراكم وكل عنصر في الصفيف (من اليسار إلى اليمين) ، وإعادة مجموعة من القيم المخفضة على التوالي.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع القيمة الدنيا/الحد الأقصى للمصفوفة ، بعد تطبيق الوظيفة المقدمة لتعيين القاعدة المقارنة.
// TODO // TODO
↑ العودة إلى الأعلى
يأخذ مسندًا ومصفولاً ، مثل Array.prototype.filter() ، ولكن يحتفظ فقط x إذا pred(x) === false .
// TODO // TODO
↑ العودة إلى الأعلى
يزيل العناصر من false تعيد الوظيفة المعطاة من أجلها.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع عنصر عشوائي من صفيف.
// TODO // TODO
↑ العودة إلى الأعلى
يحصل n عناصر عشوائية في مفاتيح فريدة من array تصل إلى حجم array .
// TODO // TODO
↑ العودة إلى الأعلى
تقوم هذه الطريقة بتغيير محتويات صفيف عن طريق إزالة العناصر الموجودة و/أو إضافة عناصر جديدة. على غرار إصدار JavaScript Array.prototype.splice()
// TODO // TODO
↑ العودة إلى الأعلى
قم بعشوائية ترتيب قيم صفيف ، وإعادة صفيف جديد.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع مجموعة من العناصر التي تظهر في كلا المصفمين.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع Direction.Ascending إذا تم فرز التعداد في ترتيب تصاعدي ، Direction.Descending إذا تم فرزه بترتيب تنازلي أو Direction.NotSorted .
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 ;
}
}
}يستخدم 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
↑ العودة إلى الأعلى
إرجاع أدنى فهرس يجب أن يتم إدراج القيمة في صفيف من أجل الحفاظ على ترتيب الفرز الخاص به.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع أدنى فهرس يجب أن يتم فيه إدراج القيمة في صفيف من أجل الحفاظ على ترتيب الفرز الخاص به ، استنادًا إلى وظيفة Iterator المقدمة.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع أعلى فهرس يجب أن يتم إدراج القيمة في صفيف من أجل الحفاظ على ترتيب الفرز الخاص به.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع أعلى فهرس يجب أن يتم فيه إدراج القيمة في صفيف من أجل الحفاظ على ترتيب الفرز الخاص به ، استنادًا إلى وظيفة Iterator المقدمة.
// TODO // TODO
↑ العودة إلى الأعلى
يؤدي فرزًا مستقرًا من صفيف ، مع الحفاظ على الفهارس الأولية للعناصر عندما تكون قيمها هي نفسها. لا يتحول الصفيف الأصلي ، لكنه يعيد صفيفًا جديدًا بدلاً من ذلك.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع الفرق المتماثل بين صفيفتين ، دون تصفية القيم المكررة.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع الفرق المتماثل بين صفيفتين ، بعد تطبيق الوظيفة المقدمة على كل عنصر صفيف لكليهما.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع الفرق المتماثل بين صفيفتين ، باستخدام وظيفة المقدمة كمقارنة.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع جميع العناصر في صفيف باستثناء العناصر الأولى.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع صفيف مع عناصر n التي تم إزالتها من البداية.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع صفيف مع عناصر N التي تم إزالتها من النهاية.
// TODO // TODO
↑ العودة إلى الأعلى
يزيل العناصر من نهاية صفيف حتى تُرجع الوظيفة التي تم تمريرها true . إرجاع العناصر التي تمت إزالتها.
// TODO // TODO
↑ العودة إلى الأعلى
يزيل العناصر في صفيف حتى تُرجع الوظيفة التي تم تمريرها true . إرجاع العناصر التي تمت إزالتها.
// TODO // TODO
↑ العودة إلى الأعلى
يحول التعداد ثنائي الأبعاد إلى سلسلة قيم مفصولة بالفاصلة (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"
↑ العودة إلى الأعلى
يقلل من صفيف معين يشبه تجزئة قيمة (متجر بيانات مفتاح).
// TODO // TODO
↑ العودة إلى الأعلى
يعيد كل عنصر موجود في أي من المصفمين مرة واحدة.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع كل عنصر موجود في أي من المصفمين مرة واحدة ، بعد تطبيق الوظيفة المقدمة على كل عنصر صفيف من كليهما.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع كل عنصر موجود في أي من المصفوفتين مرة واحدة ، باستخدام وظيفة المقارنة المقدمة.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع جميع القيم الفريدة من صفيف.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع جميع القيم الفريدة لمجموعة ، بناءً على وظيفة المقارنة المقدمة.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع جميع القيم الفريدة لمجموعة ، بناءً على وظيفة المقارنة المقدمة.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع الفرق المتماثل الفريد بين صفيفتين ، لا يحتوي على قيم مكررة من أي من الصفيف.
// TODO // TODO
↑ العودة إلى الأعلى
تقوم بتصفية عناصر الصفيف ، والتي لها واحدة من القيم المحددة.
// TODO // TODO
↑ العودة إلى الأعلى
ينشئ مجموعة جديدة من الاثنين المقدمة عن طريق إنشاء كل زوج ممكن من المصفوفات.
// TODO // TODO
↑ العودة إلى الأعلى
يتحقق ما إذا كان رقمين مساويين تقريبًا لبعضهما البعض.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع متوسط عدد أو أكثر.
الطريقة باستثناء الأرقام كمعاملات وإرجاع المتوسط نتيجة لذلك.
وثائق LINQ هنا.
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
↑ العودة إلى الأعلى
إرجاع متوسط صفيف ، بعد تعيين كل عنصر إلى قيمة باستخدام وظيفة المقدمة.
// TODO // TODO
↑ العودة إلى الأعلى
يقيم معامل الحدين من اثنين من الأعداد الصحيحة n و k .
// TODO // TODO
↑ العودة إلى الأعلى
يحول زاوية من الدرجات إلى الراديان.
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
↑ العودة إلى الأعلى
يحول رقم إلى مجموعة من الأرقام.
// TODO // TODO
↑ العودة إلى الأعلى
يعيد المسافة بين نقطتين.
// TODO // TODO
↑ العودة إلى الأعلى
يحسب العازف رقم.
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
↑ العودة إلى الأعلى
يولد قائمة ، تحتوي على تسلسل Fibonacci ، حتى المصطلح التاسع.
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 }
↑ العودة إلى الأعلى
يحسب أعظم مقسوم مشترك بين رقمين أو أكثر/المصفوفات.
// TODO // TODO
↑ العودة إلى الأعلى
تهيئة صفيف يحتوي على الأرقام في النطاق المحدد حيث يكون start end شاملين وكانت النسبة بين مصطلحين step . إرجاع خطأ إذا كانت step تساوي 1 .
// TODO // TODO
↑ العودة إلى الأعلى
يتحقق مما إذا كان الرقم المحدد يقع ضمن النطاق المحدد.
// TODO // TODO
↑ العودة إلى الأعلى
يتحقق إذا كان الرقم A قابل للقسمة بفارق آخر.
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
↑ العودة إلى الأعلى
إرجاع true إذا كان الرقم المحدد حتى ، 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
↑ العودة إلى الأعلى
يتحقق مما إذا كان عدد صحيح المقدمة هو رقم رئيسي.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع true إذا كان الرقم المحدد غريبًا ، false خلاف ذلك.
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
↑ العودة إلى الأعلى
إرجاع أقل المضاعف الشائع من رقمين أو أكثر.
// TODO // TODO
↑ العودة إلى الأعلى
تنفيذ خوارزمية Luhn المستخدمة للتحقق من صحة مجموعة متنوعة من أرقام الهوية ، مثل أرقام بطاقات الائتمان ، وأرقام IMEI ، وأرقام معرفات الموفر الوطني ، إلخ.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع القيمة القصوى من التعداد المقدم.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع متوسط مجموعة من الأرقام.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع الحد الأدنى من القيمة من التعداد المقدم.
// TODO // TODO
↑ العودة إلى الأعلى
يولد الأعداد الأولية إلى رقم معين ، باستخدام غربال eratosthenes.
// TODO // TODO
↑ العودة إلى الأعلى
يحول زاوية من الراديان إلى درجات.
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
↑ العودة إلى الأعلى
إرجاع مجموعة من الأعداد الصحيحة العشوائية n في النطاق المحدد.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع عدد صحيح عشوائي في النطاق المحدد.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع رقم عشوائي في النطاق المحدد.
// TODO // TODO
↑ العودة إلى الأعلى
جولات رقم إلى كمية محددة من الأرقام.
// TODO // TODO
↑ العودة إلى الأعلى
تجزئة سلسلة الإدخال في رقم كامل.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع الانحراف المعياري لمجموعة من الأرقام.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع مجموع اثنين أو أكثر من الأرقام/المصفوفات.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع مجموع صفيف ، بعد تعيين كل عنصر إلى قيمة باستخدام وظيفة المقدمة.
// TODO // TODO
↑ العودة إلى الأعلى
إرجاع عدد المرات التي تم تنفيذ وظيفة في الثانية. hz هي وحدة hertz ، وحدة التردد المعرّفة على أنها دورة واحدة في الثانية.
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 ) ;
↑ العودة إلى الأعلى
يتكرر على رد الاتصال n
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
↑ العودة إلى الأعلى
إرجاع طول السلسلة في البايتات.
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
↑ العودة إلى الأعلى
إرجاع عدد حروف العلة في سلسلة المقدمة.
"" . ByteSize ( ) ; # 0
"Hello World" . ByteSize ( ) ; # 11
"Hello World" . ByteSizeUnicode ( ) ; # 22
"Hello World" . ByteSizeUtf32 ( ) ; # 44
"This is 30 seconds of C." . ByteSizeBigEndianUnicode ( ) ; # 48 // TODO
↑ العودة إلى الأعلى
يحول سلسلة القيم المفصولة للفاصلة (CSV) إلى صفيف ثنائي الأبعاد.
// TODO // TODO
↑ العودة إلى الأعلى
يحول سلسلة قيم مفصولة مفصولة (CSV) إلى صفيف ثنائي الأبعاد من الكائنات. يتم استخدام الصف الأول من السلسلة كصف العنوان.
// TODO // TODO
↑ العودة إلى الأعلى
تحقق مما إذا كانت السلسلة تنتهي بسلسلة فرعية معينة باستخدام regex.
الطريقة باستثناء السلسلة للاختبار والفرعية للاختبار.
معظم الشيكات الأخرى مدمجة بالفعل.
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
↑ العودة إلى الأعلى
يحول سلسلة من Camelcase. يجعل كل الكلمات صغيرة ويجمعها باستخدام فاصل متوفر (الافتراضي هو مساحة بيضاء واحدة). من param issentence == صحيح ، سيكون الحرف الأول من الجملة أكبر وسيتم إضافة نقطة في النهاية (الافتراضي صحيح).
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"
↑ العودة إلى الأعلى
يتحقق ما إذا كانت السلسلة عبارة عن جنسي من سلسلة أخرى (غير حساسة للحالة).
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
↑ العودة إلى الأعلى
يتحقق إذا كانت السلسلة هي حالة أقل.
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
↑ العودة إلى الأعلى
إرجاع true إذا كانت السلسلة المعطاة هي palindrome ، 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
↑ العودة إلى الأعلى
يتحقق إذا كانت السلسلة هي الحالة العليا.
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
↑ العودة إلى الأعلى
يستبدل جميع length الأخير من الأحرف مع حرف mask المحدد. حذف الوسيطة الثانية ، length ، للحفاظ على افتراضي من 4 أحرف غير محددة. إذا كان length سلبيًا ، فستكون الأحرف غير المقنعة في بداية السلسلة. حذف الوسيطة الثالثة ، mask ، لاستخدام حرف افتراضي لـ '*' للقناع.
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"
↑ العودة إلى الأعلى
وسادات سلسلة على كلا الجانبين مع الحرف المحدد ، إذا كانت أقصر من الطول المحدد. استخدم PadLeft() و PadRight() لوضع كلا الجانبين من السلسلة المحددة. حذف الوسيطة الثالثة ، char ، لاستخدام حرف المسافة البيضاء كحرف حشوة افتراضي.
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"
↑ العودة إلى الأعلى
يزيل أحرف ASCII غير القابلة للطباعة. استخدم تعبيرًا منتظمًا لإزالة أحرف ASCII غير القابلة للطباعة.
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"
↑ العودة إلى الأعلى
يعكس سلسلة.
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!"
↑ العودة إلى الأعلى
يقسم سلسلة متعددة إلى مجموعة من الخطوط.
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." , "" }
↑ العودة إلى الأعلى
تحقق مما إذا كانت السلسلة تبدأ بسلسلة فرعية معينة باستخدام regex.
الطريقة باستثناء السلسلة للاختبار والفرعية للاختبار.
معظم الشيكات الأخرى مدمجة بالفعل.
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
↑ العودة إلى الأعلى
يزيل علامات HTML/XML من السلسلة. استخدم تعبيرًا منتظمًا لإزالة علامات HTML/XML من سلسلة.
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"
↑ العودة إلى الأعلى
يحول سلسلة إلى 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"
↑ العودة إلى الأعلى
يحول سلسلة إلى حالة الكباب.
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"
↑ العودة إلى الأعلى
يحول سلسلة إلى علبة الأفعى.
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"
↑ العودة إلى الأعلى
يحول سلسلة إلى حالة العنوان.
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"
↑ العودة إلى الأعلى
ياقط سلسلة تصل إلى طول محدد.
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"
↑ العودة إلى الأعلى
يحول سلسلة معينة إلى قائمة الكلمات.
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 > ( )
↑ العودة إلى الأعلى
يتحقق مما إذا كان النوع المقدم من نوع رقمي.
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
↑ العودة إلى الأعلى
يمتد رمز اللون المكون من 3 أرقام إلى رمز لون مكون من 6 أرقام.
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"
↑ العودة إلى الأعلى
يحول رمز اللون إلى سلسلة rgb() أو rgba() إذا تم توفير قيمة ألفا.
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)"
↑ العودة إلى الأعلى
يحول رقم بايت إلى سلسلة قابلة للقراءة الإنسان.
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"
↑ العودة إلى الأعلى
يولد لون عشوائي عشوائي.
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 . )
↑ العودة إلى الأعلى
يحول قيم مكونات RGB إلى رمز اللون.
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"
↑ العودة إلى الأعلى
يقيس الوقت الذي تستغرقه وظيفة للتنفيذ.
وثائق ساعة توقيت هنا.
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
↑ العودة إلى الأعلى
إرجاع true إذا كانت السلسلة y / yes أو false إذا كانت السلسلة 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
↑ العودة إلى الأعلى
اهلا وسهلا بكم دائما للمساهمة في هذا المشروع. يرجى قراءة دليل المساهمة.
| جوناس شوبرت | دينيس Biondic |
يتم توزيع 30 ثانية من C# بموجب ترخيص معهد ماساتشوستس للتكنولوجيا. انظر الترخيص للحصول على التفاصيل.
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.