#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 может найти мой код полезным.