Есть ли эквивалент String.Split, который возвращает общий список?

Я бы хотел сделать что-то вроде этого:

Dim Foo as String = "a,b,c,d,e"
Dim Boo as List(of String) = Foo.Split(","c)

Конечно, Foo.Split возвращает одномерный массив String, а не общий List. Есть ли способ сделать это без итерации по массиву, чтобы превратить его в общий List?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
14
0
29 032
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Если вы используете Linq, вы можете использовать метод расширения ToList ()

Dim strings As List<string> = string_variable.Split().ToList<string>();

Как именно вы предлагаете использовать Linq для запроса строки, разделенной запятыми?

Herb Caudill 14.10.2008 19:22

Он не спрашивает. Метод расширения ToList (), который Code Monkey показывает в своем ответе, является лишь частью класса функциональности, известного как "Linq" (и используется для поддержки запросов LINQ, но вы можете использовать его для других целей)

James Curran 14.10.2008 19:28

Вы можете использовать конструктор List.

String foo = "a,b,c,d,e";
List<String> boo = new List<String>(foo.Split(","));

Жаль коврики! Без обид!

Bob King 14.10.2008 23:26
Ответ принят как подходящий

Если вы не хотите использовать LINQ, вы можете:

Dim foo As String = "a,b,c,d,e"
Dim boo As New List(Of String)(foo.Split(","c))

Не знал о c для преобразования строки в символ ... Вместо этого я всегда использовал new Char() { "," }. Это *много аккуратнее

freefaller 31.12.2016 16:56

Вам действительно нужен List <T> или подойдет IList <T>? Поскольку string [] уже реализует последнее ... это еще одна причина, по которой стоит программировать интерфейсы там, где это возможно. (Вполне возможно, что в этом случае вы действительно не можете этого сделать.)

Вы можете использовать IList <T>, на самом деле вы должны (хотя я забыл об этом в своем примере кода ответа)

IAmCodeMonkey 14.10.2008 19:23

Я согласен, хотя пытаюсь привыкнуть к этой привычке.

Saif Khan 14.10.2008 19:24

Самым простым методом, вероятно, был бы метод AddRange.

Dim Foo as String = "a,b,c,d,e"
Dim Boo as List(of String)

Boo.AddRange(Foo.Split(","c))

Спасибо - это работает так же, как принятый ответ, но немного менее компактно.

Herb Caudill 14.10.2008 19:24

Этот код работает? Мне кажется, что это вызовет исключение NullReferenceException.

Ryan Lundy 15.10.2008 07:25

Вот как я это делаю ... поскольку разделение ищет массив символов, я отсекаю первое значение в моей строке.

var values = labels.Split(" "[0]).ToList<string>();

Чтобы развить ответ, я счел очень полезным следующее:

Return New List(Of String)(IO.File.ReadAllLines(sFileName))

Dim Foo as String = "a,b,c,d,e"
Dim Boo as List(of String)
Boo = Split(Foo, ",").ToList

Преимущество этого способа состоит в том, что разделенная строка будет принимать несколько символов:

Dim Foo as String = "a<blah>b<blah>c<blah>d<blah>e"
Dim Boo as List(of String)
Boo = Split(Foo, "<blah>").ToList

Другие вопросы по теме