asp.net Преобразовывает строку CSV для строкового представления []

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

7
задан Benjol 19 August 2009 в 09:16
поделиться

17 ответов

string[] splitString = origString.Split(',');

(После комментария, не добавленного исходной отвечающей стороной) , имейте в виду, что этот ответ обращается к КОНКРЕТНОМУ СЛУЧАЮ, где там, как гарантируют, не будут НИКАКИМИ запятыми в данных.

2
ответ дан 6 December 2019 в 05:44
поделиться
string[] splitStrings = myCsv.Split(",".ToCharArray());
0
ответ дан 6 December 2019 в 05:44
поделиться
separationChar[] = {';'}; // or '\t' ',' etc.
var strArray = strCSV.Split(separationChar);
0
ответ дан 6 December 2019 в 05:44
поделиться
string test = "one,two,three";
string[] okNow = test.Split(',');
0
ответ дан 6 December 2019 в 05:44
поделиться

http://github.com/claco/csvdatareader/, обновленный с помощью TextFieldParser, предложенного cfeduke.

Всего несколько опор далеко от представления separators/trimspaces/type ig Вы просто должны кодировать для кражи.

0
ответ дан 6 December 2019 в 05:44
поделиться

Нет простого способа сделать это хорошо, если Вы хотите объяснить заключенные в кавычки элементы со встроенными запятыми, особенно если они смешаны с незаключенными в кавычки полями.

Вы также, вероятно, захотите преобразовать строки в словарь, включенный именем столбца.

Мой код, чтобы сделать это - несколько сотен строк долго.

Я думаю, что существуют некоторые примеры в сети, проектах с открытым исходным кодом, и т.д.

1
ответ дан 6 December 2019 в 05:44
поделиться

Я уже разделял на вкладках, таким образом, это добилось цели для меня:

public static string CsvToTabDelimited(string line) {
    var ret = new StringBuilder(line.Length);
    bool inQuotes = false;
    for (int idx = 0; idx < line.Length; idx++) {
        if (line[idx] == '"') {
            inQuotes = !inQuotes;
        } else {
            if (line[idx] == ',') {
                ret.Append(inQuotes ? ',' : '\t');
            } else {
                ret.Append(line[idx]);
            }
        }
    }
    return ret.ToString();
}
0
ответ дан 6 December 2019 в 05:44
поделиться

Файл CSV с Заключенными в кавычки полями, не файл CSV. Намного больше вещей (Excel) вывод без кавычек, а не с кавычками, когда Вы выбираете "Csv" в сохранении как.

Если Вы хотите тот, можно использовать, освободить или согласиться, здесь является моим, который также делает IDataReader/Record. Это также использует DataTable для определения/преобразовывания/осуществления столбцов и DbNull.

http://github.com/claco/csvdatareader/

Это не делает кавычек.. все же. Я просто бросил его вместе несколько дней назад для царапания зуда.

Точка с запятой, о которой забывают: Хорошая ссылка.Спасибо. cfeduke: Спасибо за подсказку к Microsoft. VisualBasic. FileIO.TextFieldParser. Вход в CsvDataReader сегодня вечером.

0
ответ дан 6 December 2019 в 05:44
поделиться

Некоторые файлы CSV имеют двойные кавычки вокруг значений наряду с запятой. Поэтому иногда можно разделить на этом строковом литерале:

0
ответ дан 6 December 2019 в 05:44
поделиться
string s = "1,2,3,4,5";

string myStrings[] = s.Split({','}};

Обратите внимание, что Разделение () берет массив символов для разделения на.

0
ответ дан 6 December 2019 в 05:44
поделиться

Можно смотреть на использование Microsoft. Блок VisualBasic с

Microsoft.VisualBasic.FileIO.TextFieldParser

Это обрабатывает CSV (или любой разделитель) с кавычками. Я нашел это довольно удобным недавно.

2
ответ дан 6 December 2019 в 05:44
поделиться

Попробуйте это;

static IEnumerable<string> CsvParse(string input)
{
    // null strings return a one-element enumeration containing null.
    if (input == null)
    {
        yield return null;
        yield break;
    }

    // we will 'eat' bits of the string until it's gone.
    String remaining = input;
    while (remaining.Length > 0)
    {

        if (remaining.StartsWith("\"")) // deal with quotes
        {
            remaining = remaining.Substring(1); // pass over the initial quote.

            // find the end quote.
            int endQuotePosition = remaining.IndexOf("\"");
            switch (endQuotePosition)
            {
                case -1:
                    // unclosed quote.
                    throw new ArgumentOutOfRangeException("Unclosed quote");
                case 0:
                    // the empty quote
                    yield return "";
                    remaining = remaining.Substring(2);
                    break;
                default:
                    string quote = remaining.Substring(0, endQuotePosition).Trim();
                    remaining = remaining.Substring(endQuotePosition + 1);
                    yield return quote;
                    break;
            }
        }
        else // deal with commas
        {
            int nextComma = remaining.IndexOf(",");
            switch (nextComma)
            {
                case -1:
                    // no more commas -- read to end
                    yield return remaining.Trim();
                    yield break;

                case 0:
                    // the empty cell
                    yield return "";
                    remaining = remaining.Substring(1);
                    break;

                default:
                    // get everything until next comma
                    string cell = remaining.Substring(0, nextComma).Trim();
                    remaining = remaining.Substring(nextComma + 1);
                    yield return cell;
                    break;
            }
        }
    }

}
1
ответ дан 6 December 2019 в 05:44
поделиться
CsvString.split(',');
0
ответ дан 6 December 2019 в 05:44
поделиться

Попытка:

Regex rex = new Regex(",(?=([^\"]*\"[^\"]*\")*(?![^\"]*\"))");
string[] values = rex.Split( csvLine );

Источник: http://weblogs.asp.net/prieck/archive/2004/01/16/59457.aspx

2
ответ дан 6 December 2019 в 05:44
поделиться

Если Вы хотите устойчивую обработку CSV, проверяете FileHelpers

8
ответ дан 6 December 2019 в 05:44
поделиться

Строка. Разделение просто не собирается сокращать его, но Regex. Разделение может - Попытка этот:

using System.Text.RegularExpressions;

string[] line;
line = Regex.Split( input, ",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))");

Где 'введенный' csv строка. Это обработает заключенные в кавычки разделители и должно дать Вам назад массив строк, представляющий каждое поле в строке.

17
ответ дан 6 December 2019 в 05:44
поделиться

Получите строку [] всех строк:

string[] lines = System.IO.File.ReadAllLines("yourfile.csv");

Затем цикл через и разделение те строки (это подверженное ошибкам, потому что это не проверяет на запятые в разграниченных кавычкой полях):

foreach (string line in lines)
{
    string[] items = line.Split({','}};
}
0
ответ дан 6 December 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: