السلاسل (البرمجة C# إرشادات)

سلسلة عبارة عن كائن من نوع Stringقيمته هو نص. نص داخليا، هو تخزينها كمجموعة للقراءة فقط من Charالكائنات، يمثل كل منها حرف Unicode ترميز UTF-16. هناك هو يوجد حرف إنهاء بقيمة فارغة في النهاية C# سلسلة (على العكس من C و C + +)؛ ولذلك يمكن أن تحتوي سلسلة C# على أي عدد من حرف/ حروف فارغة المضمنة ('\0'). الطول سلسلة أحرف يمثل عدد حرف/ حروف بغض النظر عن ما إذا كان تشكيل حرف/ حروف من زوج بديل Unicode أم لا. للوصول إلى نقطة رمز Unicode الفردية في سلسلة، استخدم StringInfoكائن.

أو سلسلة.System.String

في C#, stringالكلمة الأساسية هو مستعار ل String. ولذلك، Stringو stringتكون مساوية لها، ويمكن استخدم بغض النظر عن اصطلاح التسمية التي تفضلها. Stringتوفر الفئة العديد من الطرق لإنشاء أمان، التعامل مع، و مقارنة السلاسل. بالإضافة إلى لغة C# التحميلات الزائدة بعض العوامل لتبسيط العمليات سلسلة عام. ل المزيد من المعلومات حول الكلمة الأساسية، راجع سلسلة (C# مرجع). للحصول على مزيد من المعلومات حول النوع و الأساليب الخاصة به، راجع String.

التصريح و تهيئة سلاسل

إمكانية تعريف و يهيّئ السلاسل بطرق متنوع، كما هو موضح في المثال التالي:

            // Declare without initializing.
            string message1;

            // Initialize to null.
            string message2 = null;

            // Initialize as an empty string.
            // Use the Empty constant instead of the literal "".
            string message3 = System.String.Empty;

            //Initialize with a regular string literal.
            string oldPath = "c:\\Program Files\\Microsoft Visual Studio 8.0";

            // Initialize with a verbatim string literal.
            string newPath = @"c:\Program Files\Microsoft Visual Studio 9.0";

            // Use System.String if you prefer.
            System.String greeting = "Hello World!";

            // In local variables (i.e. within a method body)
            // you can use implicit typing.
            var temp = "I'm still a strongly-typed System.String!";

            // Use a const string to prevent 'message4' from
            // being used to store another string value.
            const string message4 = "You can't get rid of me!";

            // Use the String constructor only when creating
            // a string from a char*, char[], or sbyte*. See
            // System.String documentation for details.
            char[] letters = { 'A', 'B', 'C' };
            string alphabet = new string(letters);

ملاحظة لا تستخدم operaإلىr جديد إلى إنشاء كائن سلسلة فيما عدا عند تهيئة السلسلة باستخدام صفيفة الأحرف.

يهيّئ سلسلة تحتوي Emptyالقيمة ثابتة لإنشاء جديد Stringالكائنات ذات سلسلة هو الالطول الصفرية. تمثيل حرفي لسلسلة من سلسلة أحرف ذات الطول صفري هو "". قبل تهيئة سلاسل مع Emptyالقيمة بدلاً من خالية ، يمكنك تقليل فرص NullReferenceExceptionالتي تحدث. استخدم ثابتة IsNullOrEmpty(String)أسلوب للتحقق من القيمة السلسلة قبل محاولة الوصول إلى it.

immutability من سلسلة الكائنات

تكون الكائنات سلسلة التغير : لا يمكن تم تغييره هذه بعد أن تم إنشاؤها. الجميع StringC# operaإلىrs التي تظهر وأساليب إلى تعديل سلسلة إرجاع بالفعل إلى نتائج جديدة سلسلة كائن. في المثال التالي، عند المحتويات s1و s2يتم وضع سلسلة لتشكيل سلسلة واحدة، يتم سلسلتين الأصلي غير معدلة. +=العامل بإنشاء جديد سلسلة تحتوي على محتويات مركب. هذا الكائن الجديد هو المعينة إلى متغير s1، والكائن الأصلي الذي تم تعيينه إلى s1هو إصدارها لمجموعة البيانات المهملة بسبب عدم وجود متغير يحتوي على مرجع إلى it.

            string s1 = "A string is more ";
            string s2 = "than the sum of its chars.";

            // Concatenate s1 and s2. This actually creates a new
            // string object and stores it in s1, releasing the
            // reference to the original object.
            s1 += s2;

            System.Console.WriteLine(s1);
            // Output: A string is more than the sum of its chars.

ولأن سلسلة "التعديل" إنشاء سلسلة جديدة فعلا، يجب توخي الحذر عند إنشاء مراجع إلى سلاسل. إذا كنت إنشاء مرجع إلى سلسلة، وبعد ذلك "‏‏تاريخ التعديل" السلسلة الأصلية، سيستمر المرجع للإشارة إلى الكائن الأصلي بدلاً من الكائن الجديد الذي تم إنشاء d عندما تم ‏‏تاريخ التعديل السلسلة. يوضح التعليمة البرمجية التالية هذه المشكلة:

string s1 = "Hello ";
string s2 = s1;
s1 += "World";

System.Console.WriteLine(s2);
//Output: Hello

لمزيد من المعلومات حول كيفية إلى إنشاء السلاسل الجديدة التي تستند إلى التعديلات مثل بحث واستبدال العمليات تشغيل السلسلة الأصلية، راجع كيفية القيام بما يلي: تعديل محتويات السلاسل الحرفية (دليل البرمجة لـ #C).

عادي و القيم الحرفية سلسلة حرفية

استخدم القيم الحرفية سلسلة عادية عندما يجب أن تقوم بيضمّن أحرف الهروب التي يوفرها C#، كـ هو موضح في المثال التالي:

string columns = "Column 1\tColumn 2\tColumn 3";
//Output: Column 1        Column 2        Column 3

string rows = "Row 1\r\nRow 2\r\nRow 3";
/* Output:
  Row 1
  Row 2
  Row 3
*/

string title = "\"The \u00C6olean Harp\", by Samuel Taylor Coleridge";
//Output: "The Æolean Harp", by Samuel Taylor Coleridge

استخدام السلاسل الحرفية وذلك و بشكل أفضل قابلية القراءة عندما يتضمن نص سلسلة أحرف الخط المائل العكسي، على سبيل المثال في مسارات الملفات. لأن السلاسل الحرفية المحافظة على أحرف السطر الجديد كجزء من سلسلة نص، يمكنك استخدامها إلى يهيّئ سلاسل متعدد الأسطر. استخدام علامات الاقتباس المزدوجة إلى تضمين على علامة اقتباس ضمن سلسلة حرفية. يلي مثال يعرض بعض الاستخدامات عام للسلاسل الحرفية:

         string filePath = @"C:\Users\scoleridge\Documents\";
         //Output: C:\Users\scoleridge\Documents\

         string text = @"My pensive SARA ! thy soft cheek reclined
Thus on mine arm, most soothing sweet it is
To sit beside our Cot,...";
         /* Output:
         My pensive SARA ! thy soft cheek reclined
            Thus on mine arm, most soothing sweet it is
            To sit beside our Cot,... 
         */

         string quote = @"Her name was ""Sara.""";
         //Output: Her name was "Sara."

سلسلة أحرف

سلسلة الإلغاء

اسم الحرف

ترميز Unicode

\'

علامة اقتباس مفردة

0x0027

\"

علامات اقتباس مزدوجة

0x0022

\\

Backslash

0x005C

\0

Null

0x0000

A

تنبيه

0x0007

\b

Backspace

0x0008

\f

تغذية النموذج

0x000C

n\

New line

0x000A

:-R

حرف إرجاع

0x000D

t\

أفقي علامة تبويب

0x0009

\u

Unicode سلسلة الإلغاء لزوج بديل.

\Unnnnnnnn

\u

Unicode سلسلة الإلغاء

\u0041 = "A"

\v

تبويب عمودية

0x000B

\x

تتابع هروب Unicode مشابهة إلى "\u" فيما عدا ذات طول متغير.

\x0041 = "A"

ملاحظة

في وقت التحويل البرمجي، السلاسل الحرفية يتم تحويلها إلى سلاسل العادية مع كل نفس تسلسلات هروب. ولذلك، إذا قمت بعرض سلسلة حرفية في مصحح الأخطاء نافذة مراقبة، فسوف تشاهد أحرف الهروب التي تمت إضافتها بواسطة المترجم، وليس الإصدار حرفية من تعليمات برمجية المصدر. على سبيل المثال، يظهر السلسلة الحرفية @ "C:\ملفات.txt" في نافذة المراقبة كـ "C:\\ملفات.txt".

تنسيق سلاسل

سلسلة تنسيق هو سلسلة يمكن تحديد محتوياتها ديناميكياً في وقت التشغيل. إنشاء سلسلة تنسيق باستخدام ثابتة Formatأسلوب و تضمين عنصر نائب في الأقواس الكبيرة التي سيتم استبدالها بقيم غير ذلك في وقت التشغيل. يستخدم المثال التالي سلسلة تنسيق إلى إخراج نتيجة لكل تكرار لحلقة:

class FormatString
{
    static void Main()
    {
        // Get user input.
        System.Console.WriteLine("Enter a number");
        string input = System.Console.ReadLine();

        // Convert the input string to an int.
        int j;
        System.Int32.TryParse(input, out j);

        // Write a different string each iteration.
        string s;
        for (int i = 0; i < 10; i++)
        {
            // A simple format string with no alignment formatting.
            s = System.String.Format("{0} times {1} = {2}", i, j, (i * j));
            System.Console.WriteLine(s);
        }

        //Keep the console window open in debug mode.
        System.Console.ReadKey();
    }
}

التحميل الزائد واحد من WriteLineأسلوب تأخذ سلسلة تنسيق كـ معلمة. ولذلك، يمكنك فقط يضمّن سلسلة تنسيق قيمة حرفية دون اتصال واضحة إلى الأسلوب. ومع ذلك، إذا استخدمت WriteLineأسلوب إلى عرض إخراج التصحيح في ‏‫Visual Studio الإطار إخراج ، لديك إلى صراحة باستدعاء Formatالأسلوب لأن WriteLineيقبل فقط لسلسلة، ليس تنسيق السلسلة. لمزيد من المعلومات حول سلاسل التنسيق، راجع أنواع التنسيق.

سلاسل فرعية

أ سلسلة فرعية هو أي تسلسل من حرف/ حروف الموجودة في سلسلة. استخدام Substringأسلوب إلى إنشاء سلسلة جديدة من جزء من السلسلة الأصلية. يمكنك بحث عن تواجد واحد أو المزيد سلسلة فرعية باستخدام IndexOfأسلوب. استخدام Replaceأسلوب إلى استبدال الجميع تواجدات السلسلة الفرعية المعينة سلسلة جديدة. في Substringالأسلوب، Replaceفعلياً بإرجاع سلسلة جديدة و لا بتعديل السلسلة الأصلية. للمزيد من المعلومات، راجع كيفية القيام بما يلي: البحث عن السلاسل باستخدام اساليب السلاسل (دليل البرمجة لـ #C) وكيفية القيام بما يلي: تعديل محتويات السلاسل الحرفية (دليل البرمجة لـ #C).

string s3 = "Visual C# Express";
System.Console.WriteLine(s3.Substring(7, 2));
// Output: "C#"

System.Console.WriteLine(s3.Replace("C#", "Basic"));
// Output: "Visual Basic Express"

// Index values are zero-based
int index = s3.IndexOf("C");
// index = 7

الوصول إلى حرف/ حروف الفردية

يمكنك استخدام صفيف ذات القيمة فهرس للحصول على القراءة-فقط بالوصول إلى الأحرف الفردية، كـ في المثال التالي:

string s5 = "Printing backwards";

for (int i = 0; i < s5.Length; i++)
{
    System.Console.Write(s5[s5.Length - i - 1]);
}
// Output: "sdrawkcab gnitnirP"

إذا Stringلا توفر وظائف الوظيفة التي يجب أن يكون لديك إلى تعديل حرف/ حروف الفردية في سلسلة، يمكنك استخدام StringBuilderالكائن إلى تعديل حرف/ حروف الفردية "في مكان"، ثم قم بإنشاء سلسلة جديدة إلى sإلىre نتائج باستخدام StringBuilderالوظائف. في المثال التالي، افترض أنه يجب تعديل السلسلة الأصلية بطريقة معينة و ثم تخزين نتائج للاستخدام في المستقبل:

string question = "hOW DOES mICROSOFT wORD DEAL WITH THE cAPS lOCK KEY?";
System.Text.StringBuilder sb = new System.Text.StringBuilder(question);

for (int j = 0; j < sb.Length; j++)
{
    if (System.Char.IsLower(sb[j]) == true)
        sb[j] = System.Char.ToUpper(sb[j]);
    else if (System.Char.IsUpper(sb[j]) == true)
        sb[j] = System.Char.ToLower(sb[j]);
}
// Store the new string.
string corrected = sb.ToString();
System.Console.WriteLine(corrected);
// Output: How does Microsoft Word deal with the Caps Lock key?            

سلاسل فارغ و سلاسل فارغ

سلسلة فارغ يتم مثيل System.Stringكائن الذي يحتوي على الأحرف الصفرية. فارغ سلاسل تستخدم غالباً في وحدات سيناريو متعددة برمجة لتمثيل حقل نصي فارغ. يمكن استدعاء الأساليب في فارغ السلاسل لأنها صحيحة System.Stringالكائنات. تهيئة السلاسل الفارغة كـ التالي:

string s = String.Empty;

وتشغيل النقيض، فإن سلسلة فارغة لا يشير إلى مثيل System.Stringالكائن و أي محاولة استدعاء أسلوب تشغيل سلسلة فارغة الأسباب NullReferenceException. ومع ذلك، يمكنك استخدام سلاسل فارغة في سلسلة و العمليات المقارنة مع سلاسل غير ذلك. توضح الأمثلة التالية بعض الحالات إلى مرجع إلى سلسلة فارغة و لا يؤدي إلى أن يتم طرح استثناء:

static void Main()
{
    string str = "hello";
    string nullStr = null;
    string emptyStr = String.Empty;

    string tempStr = str + nullStr;
    // The following line displays "hello."
    Console.WriteLine(tempStr);

    bool b = (emptyStr == nullStr);
    // The following line displays False.
    Console.WriteLine(b);

    // The following line creates a new empty string.
    string newStr = emptyStr + nullStr;

    // Null strings and empty strings behave differently. The following
    // two lines display 0.
    Console.WriteLine(emptyStr.Length);
    Console.WriteLine(newStr.Length);
    // The following line raises a NullReferenceException.
    //Console.WriteLine(nullStr.Length);

    // The null character can be displayed and counted, like other chars.
    string s1 = "\x0" + "abc";
    string s2 = "abc" + "\x0";
    // The following line displays "* abc*".
    Console.WriteLine("*" + s1 + "*");
    // The following line displays "abc *".
    Console.WriteLine("*" + s2 + "*");
    // The following line displays 4.
    Console.WriteLine(s2.Length);
}

استخدام StringBuilder لإنشاء سلسلة السريع

شدة الأمثل العمليات السلسلة في.NET وفي معظم الحالات لا ملحوظ تأثير الأداء. ومع ذلك، في بعض السيناريوهات مثل الحلقات مشدود يتم تنفيذ العديد من المئات أو الآلاف من المرات، سلسلة العمليات يمكن أن يؤثر على الأداء. StringBuilderفئة بإنشاء مخزن مؤقت سلسلة الذي يقدم أداء أفضل في حالة تنفيذ البرنامج manipulations سلسلة كثيرة. StringBuilderسلسلة أيضا إمكانية إعادة تعيين أحرف فردية، شيء ما بيانات سلسلة مضمنة إلى نوع غير الدعم. وهذا تعليمات برمجية، على سبيل المثال، تغيير محتويات سلسلة بدون إنشاء سلسلة جديدة:

System.Text.StringBuilder sb = new System.Text.StringBuilder("Rat: the ideal pet");
sb[0] = 'C';
System.Console.WriteLine(sb.ToString());
System.Console.ReadLine();

//Outputs Cat: the ideal pet

في ترتيب هو سبيل المثال، StringBuilderالكائن هو المستخدمة لإنشاء سلسلة من التعيين من أنواع رقمي:

class TestStringBuilder
{
    static void Main()
    {
        System.Text.StringBuilder sb = new System.Text.StringBuilder();

        // Create a string composed of numbers 0 - 9
        for (int i = 0; i < 10; i++)
        {
            sb.Append(i.ToString());
        }
        System.Console.WriteLine(sb);  // displays 0123456789

        // Copy one character of the string (not possible with a System.String)
        sb[0] = sb[9];

        System.Console.WriteLine(sb);  // displays 9123456789
    }
}

سلاسل، ملحق وظائف و LINQ

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

مواضيع ذات صلة

الموضوع

الوصف

كيفية القيام بما يلي: تعديل محتويات السلاسل الحرفية (دليل البرمجة لـ #C)

يوفر تعليمات برمجية مثال يوضح كيفية تعديل محتويات السلاسل.

كيفية القيام بما يلي: سَلسَلة السلاسل المتعددة (دليل البرمجة لـ #C)

يوضح كيفية إلى استخدام +operaإلىr و Stringbuilderالفئة إلى ضم السلاسل إلى gether في وقت التحويل البرمجي ثم قم بتشغيل الوقت.

كيفية القيام بما يلي: مقارنة السلاسل (دليل البرمجة لـ #C)

يوضح كيفية إلى إجراء ترتيبي مقارنات السلاسل.

كيفية القيام بما يلي: فصل السلاسل (C# البرمجة الدليل)

يتضمن مثال التعليمات برمجية الذي يوضح كيفية إلى استخدام String.Splitأسلوب إلى تحليل سلاسل.

كيفية القيام بما يلي: البحث عن السلاسل باستخدام اساليب السلاسل (دليل البرمجة لـ #C)

توضح هذه المقالة كيفية إلى استخدام أساليب معينة إلى سلاسل البحث.

كيفية القيام بما يلي: البحث عن السلاسل الحرفية باستخدام التعابير العادية (دليل البرمجة لـ #C)

توضح هذه المقالة كيفية إلى استخدام تعبيرات عادية إلى سلاسل البحث.

كيفية القيام بما يلي: تحديد ما إذا كانت السلسلة الحرفية تمثل قيمة رقمية (دليل البرمجة لـ #C)

يوضح كيف إلى بأمان بتحليل سلسلة إلى معرفة ما إذا كان له القيمة رقمية صالحة.

كيفية القيام بما يلي: تحويل السلسلة إلى التاريخ والوقت (دليل البرمجة لـ #C)

يوضح كيفية تحويل سلسلة أحرف مثل كـ "01/24/2008 إلى System.DateTimeالكائن.

العمليات الأساسية سلسلة

توفير الارتباطات إلى إلى صور التي تستخدم System.Stringو System.Text.StringBuilderوظائف إلى القيام بعمليات سلسلة أساسى.

توزيع السلاسل

توضح هذه المقالة كيفية إدراج أحرف أو مساحات فارغة في سلسلة.

مقارنة سلاسل

يحتوي على معلومات حول كيفية إلى يقارن السلاسل ويوفر أمثلة في C# و Visual أساسى.

استخدام فئة StringBuilder

توضح هذه المقالة كيفية إلى إنشاء وتعديل الكائنات سلسلة ديناميكية باستخدام StringBuilderفئة.

LINQ و سلاسل

توفير معلومات حول كيفية إلى العمليات متعددة السلسلة باستخدام استعلامات LINQ.

دليل البرمجة لـ #C

توفير الارتباطات إلى بناء إلى صور التي توضح البرمجة في C#‎.