Заменить переменную строку пустой строкой - PullRequest
2 голосов
/ 21 октября 2010

У меня есть XML-файл, который я использую для чтения с помощью linq-to-XML.Linq-to-XML сохраняет разрывы строк и пробелы для отступа.

Так что вместо того, чтобы иметь такой guid, как:

"FB5417E2-DB15-481d-80D6-D0C4CB26EB1F"

Я получаю такие вещи:

"\n    FB5417E2-DB15-481d-80D6-D0C4CB26EB1F"

Я сделал этот метод, чтобы попытаться помочь компенсировать это:

public static string ValueTrimmed(this XElement element)
{         
    if (element != null)
        // Remove the newlines and spaces
        return element.Value.Replace("\n      ", "");

    return "";
}

Проблема в том, что это работает только для "\ n" + 6 пробелов.

Есть ли способ удалить "\ n" + любое количество пробелов?

Примечание: у меня есть несколько сценариев, где пробелы "\ n" + x находятся внутри значения.
Например:

TextTextTextTextTextTextText\n     TextTextTextTextTextTextText

Ответы [ 5 ]

7 голосов
/ 21 октября 2010

Удалить все символы новой строки, за которыми следуют пробелы:

return Regex.Replace(element.Value, @"\n\s*", String.Empty);

Если вы хотите сохранить один пробел между строками:

return Regex.Replace(element.Value, @"\n\s*", " ").Trim();
4 голосов
/ 21 октября 2010

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

return element.Value.Trim();
3 голосов
/ 21 октября 2010

Вместо того, чтобы возиться с регулярными выражениями, укажите, сохраняется ли пробел при создании XDocument с использованием соответствующего LoadOptions:

Сохранить пробел:

var xdoc1 = XDocument.Parse("<root>\r\n</root>", LoadOptions.PreserveWhitespace);
var xdoc2 = XDocument.Load(@"\path\to\xml", LoadOptions.PreserveWhitespace);

Игнорировать пробел:

var xdoc1 = XDocument.Parse("<root>\r\n</root>", LoadOptions.None);
var xdoc2 = XDocument.Load(@"\path\to\xml", LoadOptions.None);
1 голос
/ 21 октября 2010
string result = input
    .Replace("\\n", String.Empty) // replace escaped \n with nothing
    .Trim(); // removing leading (and trailing) spaces

или (попробуйте, не уверен)

string result = input.Trim(new[] { '\n' });
0 голосов
/ 21 октября 2010

введите код здесь. Если бы вы были, внутри внешнего, если поместите другой, если проверяете на «\ n», и если это возвращает true, тогда в цикле проверьте «\» или «n» или «» и замените на «». 1001 *

По сути, что-то вроде этого в псевдокоде ...

if (string != null) //check if string is not null
{
    if ((string.indexOf(0) == "\\") && (string.indexOf(1) == "n")) //check if string begins with \n
    {
        for (int i = 0; i < string.length; i++) \\since string begins with "\n" iterate until each character is neither "\", "n", " " and replace each one of those with ""
        {
            if((string.indexOf(i) == "\\") || (string.indexOf(i) == "n") || (string.indexOf(i) == " "))
                string.indexOf(i) = "";
        }

    }
}

извините, это может быть немного грязно, и некоторые синтаксис может быть немного не в порядке, но вы получите jist.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...