Убрать пробел с пути - PullRequest
0 голосов
/ 30 января 2020

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

"Salle de bains / 01-Points d'eau / 01-01 Vasques"

Теперь я хочу изменить этот путь, чтобы он выглядел следующим образом:

"Salle de bains/01-Points d'eau/01-01 Vasques"

Я уже пробовал Trim, Replace и Substring без успеха. Затем я попробовал этот метод:

private string UrlCreator(string dir)
{
    string dirFinish = dir;

    foreach(Char item in dirFinish)
    {
        if (Char.IsWhiteSpace(item) && ((item-1).Equals('/') || (item+1).Equals('/')))
        {
            string charToChange = item.ToString();
            charToChange = "";
        }
        else { }
    }

    return dirFinish;
}

Но это не дает мне желаемого результата. Как мне этого добиться?

Ответы [ 3 ]

4 голосов
/ 30 января 2020

Использование метода замены строки :

var myString = "Salle de bains / 01-Points d'eau / 01-01 Vasques";
var result = myString.Replace(" / ", "/");

// result -> "Salle de bains/01-Points d'eau/01-01 Vasques"
2 голосов
/ 30 января 2020

Другим способом достижения этой цели является объединение Split(" / ") вместе с string.Join("/");:

var input = "Salle de bains / 01-Points d'eau / 01-01 Vasques"; 
var output = string.Join("/", input.Split(" / ")); // Salle de bains/01-Points d'eau/ 01-01 Vasques

Производительность практически такая же, как при использовании Replace() однако Replace(), безусловно, легче для чтения, а ответ Майкла Хэнкока - это путь к go


Вы также можете использовать RegEx, если вы не знаю количество пробелов до и после /:

var input = "Maison 42 / Salle de bains /01-Points d'eau/ 01-01 Vasques";

string pattern = @"\s*/\s*";
string replacement = "/";
// using System.Text.RegularExpressions;
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);

Вывод

Maison 42 / Salle de bains / 01-Points d'eau / 01-01 Vasques

Шаблон \s*/\s* выполняет следующие действия:

\s* ищет любое количество пробелов

/, за которым следует вперед sla sh

\s*, за которым следует любое количество пробелов

1 голос
/ 30 января 2020

Обобщение: если вы хотите удалить произвольное число пробелов до и после /, вы можете использовать регулярные выражения :

using System.Text.RegularExpressions;

...

// two spaces after 1st '/'; no spaces before 2nd '/' 
string source = "Salle de bains /  01-Points d'eau/ 01-01 Vasques";
string result = Regex.Replace(source, @"\s*/\s*", "/"); 

Console.Write(result);

Результат:

Salle de bains/01-Points d'eau/01-01 Vasques

Другая возможность Linq

using System.Linq;

...

string result = string.Join("/", source.Split('/').Select(item => item.Trim()));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...