С# Добавить пустое значение между строками в файле CSV

У меня есть это в строке, созданной из списка, как я могу добавить пустое значение между строкой.

       using (var file = File.CreateText()
        {
            foreach (var permutation in result)
            {
                file.WriteLine(string.Join(",", permutation));
                //i++;

            }
        }

Вот результат:

результат строки = A,B,C,D,E,F,G,H,I,J

Как я могу добавить пустое значение "," в результат по определенному индексу

Пример: A,B,C,D,E,F, ,G,H,I,J

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

Результат - IEnumerable, можно ли его разделить?

используйте цикл for, вы легко узнаете свой индекс.

Drag and Drop 24.05.2019 08:05
string.Insert()?
Markus Deibel 24.05.2019 08:10

Кстати, если бы элемент был в коллекции permutation, то результат был бы хорошим, и вам не пришлось бы его модифицировать. Какой тип var permutation?

Drag and Drop 24.05.2019 08:16
Стоит ли изучать 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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
334
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Вы можете разделить строку с помощью запятой в качестве разделителя, пройтись по своим символам и добавить их в список. Добавьте дополнительную пустую строку в желаемый индекс и снова соедините данные. Таким образом, вам не нужно решать, нужно ли добавлять запятую или нет при объединении строк.

var index = 6;

var data = "A,B,C,D,E,F,G,H,I,J";
var chars = data.Split(new [] { ',' });

List<string> resultData = new List<string>();

var i = 0;
foreach (var c in chars) {                                              
    if (i == index) {
        resultData.Add(" ");
    }

    i++;

    resultData.Add(c);
}

var result = string.Join(",", resultData.ToArray();

забыл добавить, что результатом является IEnumerable<string>, можно ли его разделить?

John 24.05.2019 08:18

Если ваши исходные данные уже являются IEnumerable<string>, вы можете просто оставить разделяющую часть и использовать эти данные в цикле foreach в коде.

mboldt 24.05.2019 08:23

Вы можете использовать следующий базовый алгоритм, чтобы следовать логике кода ваших вопросов:

        using (var file = File.CreateText())
        {
            int i = -1;// Loop counter
            int termReplacementIndex = 3;// Input or constant to find letter to replace

            foreach (var permutation in result)
            {
                i++;

                if (i == ((termReplacementIndex * 2) - 2))// Only stops on letters not commas
                {
                    file.WriteLine(string.Join(",", " ,"));// Adding of blank " "
                }
                file.WriteLine(string.Join(",", permutation));// Adding of letter
            }
        }

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

wareisjared 24.05.2019 08:10

Если перестановка представляет собой список, вы можете просто вставить нулевое значение в требуемый индекс:

using System;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        var list = new List<string>();

        list.Add("test 1");
        list.Add("test 2");
        list.Add("test 3");

        list.Insert(2, null);

        var str = string.Join(",", list);

        Console.WriteLine(str); // test 1,test 2,,test 3
    }
}

Измените коллекцию, прежде чем присоединиться к ней, чтобы вам не пришлось разбивать ее и повторять снова.
Поскольку сторона permutation варьируется, вы можете попытаться вставить по индексу X, когда X больше больше permutation.Count() вместо ArgumentOutOfRangeException. Я решил добавить элемент в конце. Но вам придется определить это.

public string CsvProjection(List<string> inputs, int needleIndex, string needleValue)
{
    if (needleIndex < 0)
    {
        throw new ArgumentOutOfRangeException("needleIndex must be positive.");
    }
    if (needleIndex > inputs.Count())
    {//Either throw an exception because out of bound or add to the end
        inputs.Add(needleValue);
    }
    inputs.Insert(needleIndex, needleValue);
    return string.Join(",", inputs);
}

Использование просто добавляет значение и индексную переменную:

var needleIndex= 2; 
var needleValue = "My New Value";

using (var file = File.CreateText()
{
    foreach (var permutation in result)
    {
        file.WriteLine(CsvProjection(permutation, needleIndex, needleValue));
    }
}

нахрена это "игла"?

Nyerguds 27.05.2019 13:42

@Nyerguds, исправлено. это была опечатка E и D очень близки. Во всем виновата дислексия или пятничная почта. Поиск «C# Needle insert» и «C# NeedleIndex» дал много близких результатов. Так что я думаю, что слово «игла» здесь не используется неправильно. Для вставки одного элемента в массив с этой идеей указать, где именно. Но мой английский плохой, это может быть просто неправильный термин.

Drag and Drop 03.06.2019 08:24

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