كيف يمكنني تقليم الفاصلة الرائدة في سلسلتي
سؤال
لدي سلسلة مثل أدناه.
,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(',');