加入字符串而不重复分隔符

时间:2014-05-16 22:40:59

标签: c# asp.net

一位朋友告诉我有关将字符串与分隔符组合在一起的函数,而不必担心字符串中是否已存在分隔符,但我无法记住该函数

例如:

 var stringArray = new string[]{"windows", "\users", "JohnSmith", "\Documents"}; 
 var tempString = whateverFunction(stringArray, "\")

将字符串加入

tempstring = "windows\users\JohnSmith\Documents"

对此的任何帮助都会很棒,谢谢

3 个答案:

答案 0 :(得分:3)

你可能会想到Path.Combine,但它并没有像你描述的那样工作。

var stringArray = new[] {"windows", "\\users", "JohnSmith", "\\Documents"}; 
var tempString = Path.Combine(stringArray);

这导致\Documents,因为它将最后一个作为绝对路径。此方法可以满足您的要求(从边缘修剪连接字符,而不是从整个边缘修剪)。

string WhateverFunction(string[] values, char join)
{
    return String.Join(join.ToString(), values.Select(x => x.Trim(join)));
}

var stringArray = new[] {"windows", "\\users", "JohnSmith", "\\Documents"}; 
var tempString = WhateverFunction(stringArray, '\\');

windows\users\JohnSmith\Documents

中的结果

答案 1 :(得分:1)

我认为你正在寻找Path.Combine(),虽然这是针对路径的,而不是对问题的一般回答。

答案 2 :(得分:0)

我会使用显式字符串数组,在这种情况下" \ users"等对反斜杠无效 - 它需要两个反斜杠(以逃避斜杠)。

 string[] stringArray = new string[]{"windows", "\\users", "JohnSmith", "\\Documents"}; 

 string tempString = String.Join("\\", stringArray).Replace("\\\\","\\");
 Console.WriteLine(tempString);
 // windows\users\JohnSmith\Documents

Replace()用于删除斜杠的重复。