AZHAR SAYYAD Ответов: 3

Как разделить строку и выбрать одно слово в C#


Здравствуйте я хочу разделить свою строку и хочу показать только одно слово в моей программе
предположим, это моя строка
string value = "P 2016-10-17,P 2016-10-18,P 2016-10-19,P 2016-10-20,P 2016-10-21";

и после разделения их я получил (P 2016-10-17) для каждого в строке здесь я хочу просто отобразить только P и хочу скрыть дату в строке

Что я уже пробовал:

string value = "P 2016-10-17,P 2016-10-18,P 2016-10-19,P 2016-10-20,P 2016-10-21";
          char[] delimiters = new char[] { ',' };
          string[] parts = value.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);

я использую приведенный выше код для разделения их разделение успешно выполнено но я хочу отобразить на p из строки

3 Ответов

Рейтинг:
20

OriginalGriff

Есть два способа сделать это.
Первый состоит в том, чтобы разделить строку дважды:

string value = "P 2016-10-17,P 2016-10-18,P 2016-10-19,P 2016-10-20,P 2016-10-21";
string[] parts = value.Split(',');
foreach (string part in parts)
    {
    string[] subParts = part.Split(' ');
    if (subParts.Length > 0) Console.WriteLine(subParts[0]);
    }

Второй заключается в использовании регулярных выражений:
string value = "P 2016-10-17,P 2016-10-18,P 2016-10-19,P 2016-10-20,P 2016-10-21";
MatchCollection matches = Regex.Matches(value, @"(?<=^|,)(?<Prefix>.+?)(?=\s)");
foreach (Match m in matches)
    {
    Console.WriteLine(m.Value);
    }
Регулярное выражение немного сложнее, но гораздо более гибко!


AZHAR SAYYAD

строковое значение = " P 2016-10-17, P 2016-10-18,P 2016-10-19,P 2016-10-20,P 2016-10-21";
MatchCollection matches = регулярное выражение.Совпадения (значение, @"(? <=^|,) (? & lt;префикс>.+?) (?=\s)");
foreach (Match m in matches)
{
Приставка.WriteLine(m. Value);
}

как получить индекс m. value

Рейтинг:
2

sifiso.m

Используйте SubString и IndexOf, как показано ниже.

string newString = parts[0].ToString (). Substring(0, parts[0].Метод toString().Длина - 11);

Вы можете разобраться в мельчайших деталях.


Рейтинг:
2

Suvendu Shekhar Giri

Вы можете использовать Substring() сделать это
Что-то вроде следующего должно помочь-

for(int i=0;i< parts.Length;i++)
      {              
              Console.WriteLine("{0}",parts[i].Substring(0, input.Length-11)); // 11 characters to exclude the date and one whitespace in between
              //you can create another array to store these values now
      }

Надеюсь, это поможет :)