كيف يمكنني تقليم الفاصلة الرائدة في سلسلتي

StackOverflow https://stackoverflow.com/questions/73629

  •  09-06-2019
  •  | 
  •  

سؤال

لدي سلسلة مثل أدناه.

,liger, unicorn, snipe

في اللغات الأخرى التي أعرفها، يمكنني فقط القيام بـ string.trim("،"، ولكن كيف يمكنني القيام بذلك في C#؟

شكرًا.


لقد كان هناك الكثير من الجدل حول وظيفة StartTrim.وكما أشار العديد من الأشخاص، فإن StartTrim لا يؤثر على المتغير الأساسي.ومع ذلك، نظرًا لبناء البيانات مقابل السؤال، فأنا في حيرة بشأن الإجابة التي يجب قبولها.صحيح أن السؤال يريد فقط قطع الحرف الأول وليس الأخير (إذا كان هناك آني)، ومع ذلك، لن يكون هناك أبدًا "،" في نهاية البيانات.لذا، مع ذلك، سأقبل الإجابة الأولى التي تقول استخدام StartTrim المعين لمتغير جديد.

هل كانت مفيدة؟

المحلول

string sample = ",liger, unicorn, snipe";
sample = sample.TrimStart(','); // to remove just the first comma

او ربما:

sample = sample.Trim().TrimStart(','); // to remove any whitespace and then the first comma

نصائح أخرى

string s = ",liger, unicorn, snipe";
s.TrimStart(',');

يمكن لسلاسل .net تنفيذ Trim() وTrimStart().لأنه يأخذ params, ، يمكنك كتابة:

",liger, unicorn, snipe".TrimStart(',')

وإذا كان لديك أكثر من حرف لتقليمه، يمكنك كتابة:

",liger, unicorn, snipe".TrimStart(",; ".ToCharArray())

إليك طريقة سهلة لعدم إنتاج الفاصلة البادئة لتبدأ بها:

string[] animals = { "liger", "unicorn", "snipe" };
string joined = string.Join(", ", animals);

ستؤدي string.TrimStart(',') إلى إزالة الفاصلة، ولكن ستواجه مشكلة في عملية التقسيم بسبب المسافة بعد الفاصلة.من الأفضل الانضمام فقط بفاصلة واحدة أو الاستخدام

Split(", ".ToCharArray(),StringSplitOptions.RemoveEmptyEntries);

"،ليجر، وحيد القرن، قنص".Trim(',') -> "ليجر، يونيكورن، قنص"

جرب string.Trim(',') ومعرفة ما إذا كان هذا يفعل ما تريد.

لاحظ ال إبداعي إذا تركت السلسلة دون تغيير، فسيعيد لك Trim سلسلة جديدة:

string s1 = ",abc,d";
string s2 = s1.TrimStart(",".ToCharArray());
Console.WriteLine("s1 = {0}", s1);
Console.WriteLine("s2 = {0}", s2);

مطبوعات:

s1 = ,abc,d
s2 = abc,d
string s = ",liger, unicorn, snipe";
s = s.TrimStart(',');

من المهم تعيين نتيجة TrimStart إلى متغير.كما يقول على صفحة تريم ستارت, "لا تقوم هذه الطريقة بتعديل قيمة المثيل الحالي.بدلاً من ذلك، تقوم بإرجاع سلسلة جديدة...".

في .NET، لا تتغير السلاسل.

يمكنك استخدام هذا

,ليجر، وحيد القرن، قنص".TrimStart(',');

if (s.StartsWith(",")) {
    s = s.Substring(1, s.Length - 1);
}
string t = ",liger, unicorn, snipe".TrimStart(new char[] {','});

بنفس الطريقة كما في كل مكان آخر: string.trim

    string s = ",liger, tiger";

    if (s.Substring(0, 1) == ",")
        s = s.Substring(1);

هل تقصد قطع كافة مثيلات "،" في تلك السلسلة؟

وفي هذه الحالة، يمكنك القيام بما يلي:

s = s.Replace(",", "");

ما عليك سوى استخدام السلسلة الفرعية لتجاهل الحرف الأول (أو تعيينه لسلسلة أخرى)؛

 string o = ",liger, unicorn, snipe";
 string s = o.Substring(1);

يرى: http://msdn.microsoft.com/en-us/library/d4tt83f9.aspx

        string animals = ",liger, unicorn, snipe";

        //trimmed will contain "liger, unicorn, snipe"
        string trimmed = word.Trim(',');
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top