我在我的應用程序中有一個文本框,我希望用戶能夠輸入一個字符串並敲入回車,它將該字符串添加到變量並清除文本框。他們可以通過文本框向變量添加多個字符串,每個字符串之間用逗號分隔。但是當我將完整的記錄添加到我的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王牌(),但我真的很想明白我做錯了導致問題。
感謝您的任何意見!
編輯:一點點更多的測試後,似乎enter
被擊中兩次,每次在鍵盤按下回車鍵。不知道爲什麼。
如果沒有好的[mcve],就不可能提供具體建議的好答案。也就是說,根據你寫的內容,看起來一切正常。您似乎正在使用使用雙逗號來轉義逗號的CSV實現(因爲逗號分隔了文件中的一行內的字段)。只要你使用相同的CSV實現來讀取文件,我希望它能正確解碼轉義的逗號。 –
我編輯了我的問題,表明我只是將一個字符串添加到文本文件中,而不使用任何CSV處理方法。 – JayCee
此外,這裏沒有任何東西可以防止用戶在文本框爲空時按Enter鍵,這會導致額外的逗號。不一定是現在發生的事情,而是需要注意的事情。 – dazedandconfused