Хотите удалить двойные кавычки из строк

Я видел здесь некоторые вопросы, связанные с удалением двойных кавычек. Но это не решило мою проблему. Они сказали использовать функции замены или обрезки. Я использовал, но проблема остается.

мой код:

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();

будет не изменить фактическое