Соединяйте строки без повторения разделителя

1

друг рассказал мне о функции комбинирования строк с разделителем, не беспокоясь о том, присутствует ли разделитель уже в строках, но я не могу вспомнить функцию

например:

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

соединяет строки в

tempstring = "windows\users\JohnSmith\Documents"

любая помощь с этим будет замечательной, спасибо

Теги:

3 ответа

1
Лучший ответ

Я думаю, что вы ищете Path.Combine(), хотя это специфично для путей, а не общий ответ на вопрос.

  • 0
    @ Selman22 да, это так; Path.Combine - это функция, которая объединяет строки без повторения разделителя.
  • 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

0

Я бы использовал явные строковые массивы, и в этом случае "\ users" и т.д. Недействительны с обратным слэшем - для этого требуется две обратные черточки (чтобы избежать косой черты).

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

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

Заменить() используется для удаления дублирования косой черты.

  • 1
    Что за двусмысленная ошибка при вызове? Вы понимаете, что вопрос о C #, не так ли? Переменная, объявленная с помощью var, не более неоднозначна, чем переменная, объявленная с явным типом.
  • 0
    Вы правы, я использовал "\" в Join, который создал ошибку. Я знаю, что это C #!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню