Есть ли в Java метод объединения путей? [Дубликат]

Решение на самом деле намного проще.

l = ["not end", "", "", "", "x", "y", "don't move"]

Определите конец зоны «не двигаться»:

MOVE = 6

«Выжать» пустые строки:

part1 = [x for x in l[:MOVE] if x]

Переместить » «выдавил» пустые строки до конца:

part2 = (MOVE - len(part1)) * [""]

Объедините кусочки:

part1 + part2 + l[MOVE:]
#['not end', 'x', 'y', '', '', '', "don't move"]

В качестве альтернативы вы можете отсортировать первую часть списка по свойство быть пустой строкой:

sorted(l[:MOVE], key=lambda x: x=="") + l[MOVE:]
#['not end', 'x', 'y', '', '', '', "don't move"]
135
задан Community 23 May 2017 в 12:18
поделиться

4 ответа

Это касается версий Java 7 и ранее.

Заключить хороший ответ в кавычки на тот же вопрос:

Если Вы хотите это назад как строку позже, можно назвать getPath (). Действительно, если Вы действительно хотели подражать Пути. Объединение, Вы могли просто записать что-то как:

public static String combine (String path1, String path2) {
    File file1 = new File(path1);
    File file2 = new File(file1, path2);
    return file2.getPath();
}
165
ответ дан 23 November 2019 в 23:45
поделиться

Это - запуск, я не думаю, что он работает точно, как Вы предназначаете, но он, по крайней мере, приводит к последовательному результату.

import java.io.File;

public class Main
{
    public static void main(final String[] argv)
        throws Exception
    {
        System.out.println(pathJoin());
        System.out.println(pathJoin(""));
        System.out.println(pathJoin("a"));
        System.out.println(pathJoin("a", "b"));
        System.out.println(pathJoin("a", "b", "c"));
        System.out.println(pathJoin("a", "b", "", "def"));
    }

    public static String pathJoin(final String ... pathElements)
    {
        final String path;

        if(pathElements == null || pathElements.length == 0)
        {
            path = File.separator;
        }
        else
        {
            final StringBuilder builder;

            builder = new StringBuilder();

            for(final String pathElement : pathElements)
            {
                final String sanitizedPathElement;

                // the "\\" is for Windows... you will need to come up with the 
                // appropriate regex for this to be portable
                sanitizedPathElement = pathElement.replaceAll("\\" + File.separator, "");

                if(sanitizedPathElement.length() > 0)
                {
                    builder.append(sanitizedPathElement);
                    builder.append(File.separator);
                }
            }

            path = builder.toString();
        }

        return (path);
    }
}
-6
ответ дан 23 November 2019 в 23:45
поделиться

Один путь состоит в том, чтобы получить системные свойства, которые дают Вам разделитель пути для операционной системы, это учебное руководство объясняет как. Можно затем использовать стандартное строковое соединение с помощью file.separator.

0
ответ дан 23 November 2019 в 23:45
поделиться

Можно просто сделать

String joinedPath = new File(path1, path2).toString();
102
ответ дан 23 November 2019 в 23:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: