从路径中删除空格



我有一个字符串,其路径如下所示:

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

现在我想将此路径更改为如下所示:

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

我已经尝试了TrimReplaceSubstring都没有成功。然后我尝试了这种方法:

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;
}

但这并没有给我想要的结果。我怎样才能做到这一点?

使用字符串替换方法:

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"

实现此目的的另一种方法是将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()当然更容易阅读,迈克尔汉考克的答案是要走的路


如果您不知道/前后的空格数,您也可以使用 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);

输出为

梅森 42/贝恩斯厅/01分/01-01 瓦斯克

该模式s*/s*执行以下操作:

s*搜索任意数量的空格

/后跟正斜杠

s*后跟任意数量的空格

泛化:如果要删除/前后任意数量的空格,可以使用正则表达式

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

相关内容

  • 没有找到相关文章

最新更新