Есть ли быстрый способ построить путь из списка частей, кроме использования ifs? - PullRequest
0 голосов
/ 30 апреля 2020

Мне нужно создать путь к файлу на основе ряда элементов, которые могут существовать или не существовать, и я изо всех сил пытаюсь придумать, как можно просто кодировать синтаксис без использования загрузки операторов if.

Скажем, у меня есть метод, который выполняет ниже

public string BuildPath(string serialNumber, string path, string filename) {  
    string path = "";
    if(String.isNullorWhitespace(path) {
        path = serialNumber + "/" + filename;
    }
    else {
        path = serialNumber + "/" + path + "/" + filename;
    }
}

Сложность здесь заключается в том факте, что если путь пустой или нулевой, мне потребуется только один символ / в конечном пути, если Я не делаю это правильно, путь не будет действительным.

Ответы [ 3 ]

2 голосов
/ 30 апреля 2020

Я надеюсь, что в вашем коде есть опечатка, потому что, как написано в данный момент, не будет else прогонов ...

Мне нравится подход LINQ / params:

public string BuildPath(params string[] input) 
{  
    return string.Join('/', input.Where(x => !string.IsNullOrWhitespace(x)));
}

Тогда вы можете назвать это так:

BuildPath("justone"); // justone
BuildPath("missing", "", "one"); // missing/one
BuildPath("some", "path", "to", "somewhere"); // some/path/to/somewhere
1 голос
/ 30 апреля 2020

Поместите их в список и Join их на sla sh:

var pathList = new List<string>{serialNumber, path, filename};
pathList = pathList.RemoveAll(i => String.IsNullOrEmpty(i));
return String.Join('/', pathList);
0 голосов
/ 30 апреля 2020

Попробуйте изменить параметр на List<string> type и измените его следующим образом:

public string BuildPath(List<string> urlParts) {  
    return string.join("/", urlParts);
}

метод соединения строковых дескрипторов null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...