У меня есть текстовое поле в моем приложении, которое я хотел бы, чтобы пользователи могли вводить строку и вставлять в нее, что добавляет эту строку в переменную и очищает текстовое поле. Они могут добавлять несколько строк к переменной через текстовое поле, каждое из которых разделяется запятой. Но когда я добавляю полную запись в свой файл csv, у нее есть двойные запятые. Я не вижу, где они добавляются.UWP C# Устранение двойной запятой из textbox.txt
желаемого результата 1/1/2017,12: 00, Джо, из, 1234,09112,4545,120034
, что я получаю в настоящее время 1/1/2017,12 : 00, Джо, из, 1234,, 09112,, 4545,, 120034 ,,
здесь соответствующий код:
private void meterNumberBox_KeyDown(object sender, KeyRoutedEventArgs e)
{
if (e.Key == Windows.System.VirtualKey.Enter)
{
singlescan = meterNumberBox.Text + ",";
meternumber += singlescan;
meterNumberBox.Text = "";
singlescan = "";
}
}
private async void SubmitButton_Click(object sender, RoutedEventArgs e)
{
action = "out";
// create record to be added to CSV
recordline = DateTime.Today.ToString("MM/dd/yyyy") + ",";
recordline += DateTime.Now.ToString("HH:mm:ss");
recordline += ",";
recordline += checkoutName;
recordline += ",";
recordline += action;
recordline += meternumber;
recordline += "\r\n";
// then it submits the recordline to the record file.
// open csv and append record
StorageFolder appStoragefolder = ApplicationData.Current.RoamingFolder;
StorageFile appRecordFile = await appStoragefolder.CreateFileAsync(filename, CreationCollisionOption.OpenIfExists); // if it doesn't exist it will be created
var stream = await appRecordFile.OpenAsync(FileAccessMode.ReadWrite);
using (var outputstream = stream.GetOutputStreamAt(stream.Size))
{
using (var dataWriter = new Windows.Storage.Streams.DataWriter(outputstream))
{
dataWriter.WriteString(recordline);
await dataWriter.StoreAsync();
await outputstream.FlushAsync();
}
}
stream.Dispose();
Я думаю, что я могу устранить двойной запятые из recordline с .repl ace(), но я действительно хочу понять, что я делаю неправильно, чтобы вызвать проблему.
Спасибо за любой ввод!
Редактировать: После немного большего количества испытаний оказывается, что enter
ударяется дважды при каждом нажатии клавиши Enter. Не знаю, почему.
Без хорошего [mcve] невозможно будет дать хороший ответ с конкретными советами. Тем не менее, основываясь на том, что вы написали, кажется, все в порядке. Кажется, вы используете реализацию CSV, которая использует двойную запятую, чтобы избежать запятой (требуется, поскольку одна запятая ограничивает поля в строке в файле). Пока вы используете ту же реализацию CSV для чтения файла, я ожидаю, что он будет правильно декодировать скрытые запятые. –
Я отредактировал свой вопрос, чтобы показать, что я просто добавляю строку в текстовый файл, не используя методы обработки CSV. – JayCee
Кроме того, здесь нет ничего, что помешало бы пользователю нажать Enter, пока текстовое поле пуст, что приведет к дополнительной запятой. Не обязательно то, что происходит сейчас, но что-то, о чем нужно знать. – dazedandconfused