Разделенное запятыми значение текстового поля для списка / массива строк - Есть ли лучший способ написать этот код? - PullRequest
0 голосов
/ 01 февраля 2009

Я хочу создать массив / список строк с разделенными запятыми строками (расширениями файлов), которые вводятся в текстовое поле.

Для следующего блока кода:

            Dim csv As String = Textbox1.Text + ","

            While csv.IndexOf(".") <> -1
                lstOfStrings.Add(csv.Substring(0, csv.IndexOf(",")))
                csv = csv.Remove(0, csv.IndexOf(",") + 1)
            End While

Вывод:

Textbox1.Text = ".exe, .php"

listOfStrings = {".exe", ".php"}

Есть ли лучший способ написать этот код?

Ответы [ 2 ]

6 голосов
/ 01 февраля 2009

Лучше было бы использовать метод Split :

Dim lstOfStrings() As String = Textbox1.Text.Split(","c)
1 голос
/ 01 февраля 2009

Вот другой способ с Regex + LINQ. Он учитывает целые имена файлов, если это то, что вы цените. Разделение предпочтительно в зависимости от того, насколько обусловлен ввод (пробелы и т. П.).

using System;
using System.Linq;
using System.Text.RegularExpressions;
using System.Collections.Generic;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = "fileone.aspx, filetwo.csv,filethree.exe, filefour.php";
            List<string> extensions = Regex.Matches(s, @"(\.\w+)\s*,?")
                .OfType<Match>().Select(m => m.Groups[1].Value)
                .ToList();
            extensions.ForEach(i => Console.WriteLine(i));
            Console.ReadLine();
        }
    }
}

OUTPUT

.aspx

.csv

.exe

второстепенный

Вы можете добавить .Distinct (), если вы хотите уникальные расширения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...