до
aaa,"da,dd",22,22
после
aaa "da dd" 22 22
Что необходимо сделать, чтобы это получить:?
aaa,"dadd",22,22
Const replaceMe As String = "," '
Const replacement As String = " "
Dim line As String = Nothing
Using r As New StreamReader("s.txt")
Using w As New StreamWriter("d.txt")
line = r.ReadLine()
While Not line Is Nothing
w.WriteLine(line.Substring(0, 9) + line.Substring(9).Replace(replaceMe, replacement))
line = r.ReadLine()
End While
End Using
End Using
Приведенный выше код заменяет все в текстовом файле, затем снова сохраняет файл, но я хочу заменить только то, что находится внутри кавычки.
вы можете попробовать Learn.microsoft.com/de-de/dotnet/api/…
Сопоставить (".*)(,)(.*")
и заменить на $1~$3
?
заменить или удалить?' – нет, я хочу обменять
Сопоставить (.*)(,)(.*") и заменить на $1~$3? a,"d,d",22,22 Я хочу удалить запятую в кавычках
Этот код заменяет каждую запятую в текстовом файле. Я хочу заменить только то, что находится внутри кавычек.
В вашем коде есть replacement As String = "~"
. Ваше сообщение некорректно? Удаление запятой означает, что вы получите, например, aaa,"dadd",22,22
? Если это так, просто замените на $1$3
Похоже, вы думаете об этом неправильно, пытаясь очистить данные CSV для последующего вызова наивной функции Split(). Вместо этого найдите настоящий синтаксический анализатор CSV. Настоящий синтаксический анализатор может обрабатывать поля в кавычках (а также многие другие крайние случаи) изящно и правильно, обычно с гораздо большей производительностью. Через NuGet доступно несколько хороших анализаторов csv.
Imports System.IO
Imports System.Text.RegularExpressions
Const replaceMe As String = ","
Const replacement As String = ""
Dim regEx As New Regex("""([^""]*)""")
Dim line As String = Nothing
Using r As New StreamReader("s.txt")
Using w As New StreamWriter("d.txt")
line = r.ReadLine()
While line IsNot Nothing
w.WriteLine(regEx.Replace(line, Function(m) _
m.Value.Replace(replaceMe, replacement)))
line = r.ReadLine()
End While
End Using
End Using
s.txt
aaa,"da,dd",22,22 aaa,"da,dd",22,22 aaa,"da,dd (no closing quotation mark)
d.txt
aaa,"dadd",22,22 aaa,"dadd",22,22 aaa,"da,dd (no closing quotation mark)
Спасибо Константин Макаров, это то, что я искал.
заменить или удалить?'