C # Читать конкретную строку в тесте

#c# #string

#c# #строка

Вопрос:

Я использую API, который возвращает результаты, подобные этому:

введите описание изображения здесь

ОК

66443010

http://getclicky.com/help/api/whitelabel

Используя C #, каков наилучший способ получить значение определенной строки, например, 2-й строки. Я просто хочу «500»

Комментарии:

1. Можете ли вы гарантировать, что в значении в каждой строке не будет пробелов?

2. Вы читаете это из потока, файла?

Ответ №1:

Это может быть так просто, как это (предполагая, что строки разделены с "n" , вы должны проверить это с помощью возвращаемого значения):

 var lines = result.Split("n");
var code = lines.Length >= 2 ? lines[1] : null;
  

Комментарии:

1. Разве это не должно быть Environment.Newline вместо "n" ?

2. @SteveGreatrex: Нет — Environment.NewLine зависит от вашей системы. Нет гарантии, что удаленный API использует то же определение «новой строки», что и ваша система.

3. Хороший момент, но не означает ли это, что мы предполагаем, что удаленный API использует "n" ? Не лучше ли нам использовать что-то вроде Regex.Split(result, @"[rn] ") ?

4. @SteveGreatrex: Нам было бы лучше использовать все, что делает удаленный API, вот почему я написал «вы должны это проверить».

Ответ №2:

В приведенном ниже примере используются регулярные выражения для разделения строки на основе каждого появления последовательности символов возврата каретки или новой строки:

 var segments = Regex.Split(myText, @"[rn] ");
  

Из этого вы можете просто захватить любой сегмент, который вы хотите, индексируя результат, и он не зависит от какого-либо конкретного символа новой строки из удаленного API.

Преимущество этого подхода также заключается в удалении любых пустых строк из segments массива, которые (предположительно) вас не интересуют.

Ответ №3:

Используйте ReadLine() из StreamReader или File.Прочитайте все строки, чтобы заполнить строку[], затем вы извлекаете нужную строку из массива. Для второй строки извлеките строку с индексом 1.

Если у вас уже есть данные в строке, используйте string.Разделите (Environment.NewLine), чтобы создать строку[].

Комментарии:

1. В данном случае не рекомендуется использовать Environment.NewLine в качестве разделителя — это вызываемый API, который решает, какой разделитель строк, а не вызывающая система.

2. Это правильно, они должны использовать любой разделитель строк, который использовался при создании файла. Это может быть не Environment.NewLine.

Ответ №4:

Спасибо за вашу помощь. С вашим отзывом я создал эту функцию:

 private static string GetLineFromResponse(string response, int lineWanted)
    {
        var lines = response.Split('n');
        return lines[lineWanted];
    }
  

Комментарии:

1. Это не ответ. Пожалуйста, оставьте благодарность в качестве комментария ответчику.

2. нет, эта функция действительно полезна. Я отметил ответ, который помог мне, как правильный. Будущий пользователь Google может найти мой код полезным.