2014-05-16 2 views
1

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

пример:

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

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

tempstring = "windows\users\JohnSmith\Documents" 

любая помощь с этим было бы здорово, спасибо

+0

Является ли одиночная обратная косая черта перед 'users' и' Documents' в результирующей 'tempstring'? – PoByBolek

+0

@PoByBolek да, это для иллюстрации части вопроса «без повторения разделителя». – phoog

ответ

1

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

+0

@ Selman22 да, это так; Path.Combine - это функция, которая объединяет строки без повторения разделителя. – phoog

+0

Ответ действителен – CSharpie

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

Я хотел бы использовать явные строковые массивы, в этом случае «\ пользователей» и т.д., является недействительным с задней косой черты - это требует двух встречно косой черты (спасаясь от слэш).

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

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

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

+1

Что такое неоднозначная ошибка вызова? Вы понимаете, что вопрос о C#, не так ли? Переменная, объявленная с var, не более неоднозначна, чем переменная, объявленная с явным типом. – phoog

+0

Вы правы, я использовал «\» в Join, который создал ошибку. Я знаю, что это C#! –

Смежные вопросы