C #: эффективный способ извлечь элемент из строки с разделителями

Не уверен, что я сделал это правильно, но это то, что я пытался. Надеюсь, это поможет!

select card_number, transaction_date, sta
from
(
select t1.card_number, t1.transaction_date, t1.sta, datediff(DAY, t1.transaction_date, t2.transaction_date) as diff
from trans t1
join trans t2
on t1.card_number = t2.card_number
) result
where diff=7 and sta = 'Checked Out'
0
задан re3el 18 January 2019 в 18:36
поделиться

2 ответа

Я сделал быстрый алгоритм для вашего примера. Индекс начинается с нуля, поэтому вы должны пройти 0, если вам нужен первый элемент. Вы можете изменить символ разделителя или предоставить его в качестве аргумента.

Краткое объяснение: мы перебираем все символы строки и пропускаем все элементы, пока не попадем в запрошенный. После этого мы находим следующий разделитель и возвращаем часть целой строки или возвращаем остаток строки, если не находим разделителей.

public static string GetItemByIndex(string line, int index)
{
    for (var i = 0; i < line.Length; i++)
    {
        if (index == 0)
        {
            for (int j = i; j < line.Length; j++)
            {
                if (line[j] == ',')
                {
                    return line.Substring(i, j - i);
                }
            }

            return line.Substring(i, line.Length - i);
        }

        if (line[i] == ',' && index != 0)
        {
            index--;
        }
    }

    return null;
}
0
ответ дан opewix 18 January 2019 в 18:36
поделиться

Это может быть возможным решением:

    public static string GetValue(string myString,int position)
    {
        return myString.Split(',')[position - 1];
    }

    static void Main(string[] args)
    {
        string myItem = "22";
        Console.WriteLine(GetValue("1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27", 22));
        Console.ReadLine();  
    }  
0
ответ дан Alex Leo 18 January 2019 в 18:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: