Хотите удалить двойные кавычки из строк
Я видел здесь некоторые вопросы, связанные с удалением двойных кавычек. Но это не решило мою проблему. Они сказали использовать функции замены или обрезки. Я использовал, но проблема остается.
мой код:
DataTable dt = TypeConveriontHelper.ConvretExcelToDataTable(SourceAppFilePath);
string targetPath = BatchFolderPath + @"" + "TRANSACT.INX";
StreamWriter wrtr = null;
wrtr = new StreamWriter(targetPath);
for (int x = 0; x < dt.Rows.Count; x++)
{
string rowString = "";
for (int y = 0; y < dt.Columns.Count; y++)
{
if (y == dt.Columns.Count - 1)
{
rowString += """ + dt.Rows[x][y].ToString() + """;
}
else
{
rowString += """ + dt.Rows[x][y].ToString() + ""~";
}
}
rowString.Replace('"', ' ').Trim();
wrtr.WriteLine(rowString);
}
wrtr.Close();
wrtr.Dispose();
Я попытался с помощью rowString.Replace('"', ' ').Trim();
в приведенном выше коде. Но двойные кавычки присутствуют и так. Proveide мне решение. Спасибо.
7 ответов
вам нужно назначить его обратно rowString
:
rowString = rowString.Replace('"', ' ').Trim();
строки are неизменяемые.
row.String.Replace(...)
вернет вам строку, так как вы не назначаете ей ничего, что она будет отброшена. Это не изменит оригинал
отделка может удалить любой символ(ы), а не только пробелы.
myString = myString.Trim('"');
http://msdn.microsoft.com/en-us/library/d4tt83f9%28v=vs.110%29.aspx
эта строка содержит ошибку.
rowString.Replace('"', ' ').Trim();
поскольку replace и trim возвращают строку, вам нужно назначить это переменной. Не назначая строку, Вы потеряете значение, созданное методами replace и trim.
var myString = rowString.Replace('"', ' ').Trim();
//Or
rowString = rowString.Replace('"', ' ').Trim();
в VB вы должны попробовать это :
Replace("""", "");
но в C# вы должны попробовать это :
Replace("\"", "");
rowString.Replace('"', ' ')
создает новый строковый объект и не изменяет существующий строковый объект.таким образом, вам придется назначить вновь созданный строковый объект другой переменной или перезаписать существующую переменную.
rowString=rowString.Replace('"', ' ').Trim()
or
var somestring=rowString.Replace('"', ' ').Trim()
Как упоминал Хабиб, строки неизменяемы. Любая манипуляция строками должна быть восстановлена с помощью манипулируемых данных,таких как Replace, Reverse и т. д....
поэтому попробуйте назначить замененную строку, чтобы получить желаемое поведение.
ваша проблема является распространенной ошибкой. Вот что вам нужно сделать:
rowString = rowString.Replace('"', ' ').Trim();
обязательно верните результат в переменную (rowString =
). Если вы этого не сделаете, C# все равно будет запускать методы, но не будет изменять переменную. Это относится к любому неизменяемые объекты.
пример:
rowString.Replace('"', ' ').Trim();
будет не изменить фактическое