مشاركة عبر


كيفية القيام بما يلي: استعلام عن الأحرف في سلسلة (LINQ)

لأن فئة String تطبّق الواجهة IEnumerable<T> العامة، أي سلسلة يمكن استعلامها كتسلسل من الأحرف. على الرغم من ذلك، هذا ليس استخدام شائع لLINQ. لعمليات مطابقة النمط المعقدة, استخدم فئة Regex.

مثال

يستعلم المثال التالي سلسلة لتحديد عدد الخانات الرقمية التي تحتويها. لاحظ أن الاستعلام "يعاد استخدامه" بعد أن يتم تنفيذه أول مرة. ويعد ذلك ممكناً لأن الاستعلام نفسه لا يخزن أية نتائج بالفعل.

Class QueryAString

    Shared Sub Main()

        ' A string is an IEnumerable data source.
        Dim aString As String = "ABCDE99F-J74-12-89A"

        ' Select only those characters that are numbers
        Dim stringQuery = From ch In aString 
                          Where Char.IsDigit(ch) 
                          Select ch
        ' Execute the query
        For Each c As Char In stringQuery
            Console.Write(c & " ")
        Next

        ' Call the Count method on the existing query.
        Dim count As Integer = stringQuery.Count()
        Console.WriteLine(System.Environment.NewLine & "Count = " & count)

        ' Select all characters before the first '-'
        Dim stringQuery2 = aString.TakeWhile(Function(c) c <> "-")

        ' Execute the second query
        For Each ch In stringQuery2
            Console.Write(ch)
        Next

        Console.WriteLine(System.Environment.NewLine & "Press any key to exit")
        Console.ReadKey()
    End Sub
End Class
' Output:
' 9 9 7 4 1 2 8 9 
' Count = 8
' ABCDE99F
class QueryAString
{
    static void Main()
    {
        string aString = "ABCDE99F-J74-12-89A";

        // Select only those characters that are numbers
        IEnumerable<char> stringQuery =
          from ch in aString
          where Char.IsDigit(ch)
          select ch;

        // Execute the query
        foreach (char c in stringQuery)
            Console.Write(c + " ");

        // Call the Count method on the existing query.
        int count = stringQuery.Count();
        Console.WriteLine("Count = {0}", count);

        // Select all characters before the first '-'
        IEnumerable<char> stringQuery2 = aString.TakeWhile(c => c != '-');

        // Execute the second query
        foreach (char c in stringQuery2)
            Console.Write(c);

        Console.WriteLine(System.Environment.NewLine + "Press any key to exit");
        Console.ReadKey();
    }
}
/* Output:
  Output: 9 9 7 4 1 2 8 9
  Count = 8
  ABCDE99F
*/

التحويل البرمجي للتعليمات البرمجية

  • قم بإنشاء مشروع Visual Studio الذي يستهدف اصدار 3.5 من .NET Framework. بشكل افتراضي، يحتوي المشروع مرجع إلى System.Core.dll و توجيهات (#C) using أو عبارة Imports (Visual Basic) لمساحة الاسم System.Linq. في مشاريع C#, قم بإضافة واجهة using لمساحة اسم System.IO.

  • انسخ التعليمات البرمجية لمشروعك.

  • اضغط F5 للتحويل البرمجي للبرنامج وتشغيله.

  • اضغط أي مفتاح للخروج من نافذة وحدة التحكم.

راجع أيضًا:

المهام

كيفية القيام بما يلي: جمع استعلامات LINQ مع تعابير عادية

المبادئ

LINQ و سلاسل