Удаление ненужных символов из строки - PullRequest
1 голос
/ 14 апреля 2011

У меня есть программа, в которой я беру дату из файла RSS и пытаюсь преобразовать ее в DateTime. К сожалению, файл RSS, который я должен использовать, имеет много пробелов. Когда я анализирую строку, я получаю это:

"\t\t\n\t\t4/13/2011\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t"

Я хочу удалить все \t и \n. Пока что все они провалились:

finalDateString.Trim('\t');
finalDateString.Trim('\n');
finalDateString.Trim();
finalDateString.Replace("\t", "");
finalDateString.Replace("\n", "");
finalDateString.Replace(" ", "");

Каждая из команд возвращает одну и ту же строку. Есть предложения?

(я пометил RSS на случай, если для этого есть причина RSS)

Ответы [ 6 ]

6 голосов
/ 14 апреля 2011

Вам необходимо присвоить исходное значение выводу Replace.Вам не нужно делать обрезку, так как замена избавит их от всех.

finalDateString = finalDateString.Replace("\t", "");
finalDateString = finalDateString.Replace("\n", "");
1 голос
/ 14 апреля 2011

Во-первых, вы можете удалить все пробелы из вашей строки, используя 1-символьное регулярное выражение:

    String finalDateTimeString = "\t\t\n\t\t4/13/2011\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t";
    Regex whitespaceRegex = new Regex("\\s");
    finalDateTimeString = whitespaceRegex.Replace(finalDateTimeString, "");

Я только что проверил это, и это сработало.

Во-вторых, ятолько что протестировал вызов DateTime.Parse() в вашей строке, и он работал, даже не удаляя пробелы.Так что, может быть, вам даже не нужно это делать.

    String finalDateTimeString = "\t\t\n\t\t4/13/2011\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t";
    DateTime finalDateTime = DateTime.Parse(finalDateTimeString);
    // finalDateTime.toString() == "4/13/2011 12:00:00 AM"
0 голосов
/ 02 февраля 2013
    private String stringclear(String str)
    {
        String tuslar = "qwertyuopasdfghjklizxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM._0123456789 :;-+/*@%()[]!\nüÜğĞİışŞçÇöÖ"; // also you can add utf-8 chars
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < str.Length; i++)
        {
            if (tuslar.Contains(str[i].ToString()))  //from tuslar string. non special chars
                sb.Append(str[i]);
            if (str[i] == (char)13) // special char (enter key)
                sb.Append(str[i]);
        }

        return sb.ToString();
    }
0 голосов
/ 14 апреля 2011

Все ранее опубликованные ответы удаляют все пробелы из строки, но было бы надежнее удалить только начальные и конечные пробелы.

finalDateTimeString = Regex.Replace(finalDateTimeString, @"^\s+", "");
finalDateTimeString = Regex.Replace(finalDateTimeString, @"\s+$", "");

[Я не знаю C #, поэтому ягадать по синтаксису из других постов.Исправления приветствуются.]

0 голосов
/ 14 апреля 2011

с использованием Regex.Replace :

string result = Regex.Replace(data,"[\\t,\\n]",""));
0 голосов
/ 14 апреля 2011

Я буду использовать регулярные выражения

string strRegex = @"([\s])";    
Regex myRegex = new Regex(strRegex);
string strTargetString = @"  4/13/2011    ";
string strReplace = "";

string result = myRegex.Replace(strTargetString, strReplace);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...