Как упоминалось выше, вы можете использовать метод Split
для разделения строки. Например, если строковое значение равно "Europe, Asia, Africa"
:
string stringToSplit = "Europe, Asia, Africa";
string[] arrayOfString = stringToSplit.Split(',');
Эта перегрузка (версия) метода Split
принимает один аргумент, и это символ, используемый для разделения строки. Результат будет Europe
, Asia
и Africa
. Однако Asia
и Africa
будут иметь один пробел (' '
) в начале, потому что перед этими словами в stringToSplit
есть пробел. Кроме того, вам нужно обрезать элементы arrayOfString
, добавив
.Select(s => s.Trim()).ToArray()
Результат будет выглядеть следующим образом:
string stringToSplit = "Europe, Asia, Africa";
string[] arrayOfString = stringToSplit.Split(',').Select(s => s.Trim()).ToArray();
stringToSplit
- это строка, которую вы хотите разделить, используя ','
символ. Split(',')
- это метод, который разбивает строку, используя символ ','
, и результатом этого метода является массив string
-s. Select(s => s.Trim())
берет каждый элемент этого массива и обрезает его (удаляет все пустые места с начала и с конца), и в результате получается список строк. s
это просто псевдоним элемента, вы можете назвать его как хотите. ToArray
- это метод, который преобразует, в данном случае список, возвращаемый Select(s => s.Trim())
, в массив. Наконец, результат, хранящийся в arrayOfString
, представляет собой массив, содержащий обрезанные строки.
Имея в виду полученный вами результат, в вашем примере
IList<IList<Object>> values = response.Values;
if (values != null && values.Count > 0)
{
foreach (var row in values)
{
Console.WriteLine(row[0]);
}
}
values
представляет собой список списков. Другими словами, каждый элемент values
(названный row
в примере) является списком. После того, как вы проверите, существует ли values
(values != null
) и есть ли элементы (values.Count > 0
), вы go проходите через каждый элемент (row
) values
. Эти элементы являются списками (IList<Object>
), и вы пишете первый элемент каждого row
, используя row[0]
.
Определение IList<IList<Object>> values
говорит, что row
имеет тип IList<Object>
, что означает что каждый элемент row
имеет тип Object
. Метод WriteLine
имеет перегрузку (версию), которая принимает аргумент типа Object
, как и в этом случае. Затем этот аргумент неявно (в фоновом режиме) преобразуется в тип string
.
. Если посмотреть на вывод, нет никаких сомнений в том, что эти элементы типа Object
на самом деле являются строками, в противном случае будет записано имя типа, или некоторые другие данные бесполезны, или не читаются.
Есть две возможности.
Любой список values
содержит один элемент (один список объектов, row
) и первый элемент row
- это строка (она определенно имеет тип string
), которая содержит все эти имена, разделенные Environment.NewLine
, или список values
содержит несколько элементов (списки объектов, row
-s) и первый элемент каждого row
- это строка, содержащая одно имя.
Если вы знаете, что вы принимаете одну строку и вам нужно разделить ее, тогда все в порядке, и это будет первой возможностью. В этом случае вы можете попробовать
row[0].ToString().Split('\n')
Однако, похоже, что в другом случае, когда есть несколько списков объектов, и первым является имя. В этом случае вам не нужно ничего разбивать.