друг рассказал мне о функции комбинирования строк с разделителем, не беспокоясь о том, присутствует ли разделитель уже в строках, но я не могу вспомнить функцию
например:
var stringArray = new string[]{"windows", "\users", "JohnSmith", "\Documents"};
var tempString = whateverFunction(stringArray, "\")
соединяет строки в
tempstring = "windows\users\JohnSmith\Documents"
любая помощь с этим будет замечательной, спасибо
Я думаю, что вы ищете Path.Combine()
, хотя это специфично для путей, а не общий ответ на вопрос.
Возможно, вы думаете о 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
Я бы использовал явные строковые массивы, и в этом случае "\ users" и т.д. Недействительны с обратным слэшем - для этого требуется две обратные черточки (чтобы избежать косой черты).
string[] stringArray = new string[]{"windows", "\\users", "JohnSmith", "\\Documents"};
string tempString = String.Join("\\", stringArray).Replace("\\\\","\\");
Console.WriteLine(tempString);
// windows\users\JohnSmith\Documents
Заменить() используется для удаления дублирования косой черты.