Czy istnieje sposób, w jaki mogę uzyskać ostatnią wartość (na podstawie symbolu „\”) z pełnej ścieżki?
Przykład:
C:\Documents and Settings\img\recycled log.jpg
W tym przypadku chcę tylko uzyskać recycled log.jpg
pełną ścieżkę w JavaScript.
javascript
Jin Yong
źródło
źródło
replace
jest znacznie wolniejsze niżsubstr
, co można stosować w połączeniu zlastIndexOf('/')+1
: jsperf.com/replace-vs-substringFiddle
, chociaż dla `\\` działa dobrze."/var/drop/foo/boo/moo.js".replace(/^.*[\\\/]/, '')
powrotymoo.js
Ze względu na wydajność przetestowałem wszystkie podane tutaj odpowiedzi:
Zwycięzcą jest odpowiedź w stylu split i pop , dzięki bobince !
źródło
path.split(/.*[\/|\\]/)[1];
W Node.js możesz użyć modułu parsującego Path ...
źródło
basename
funkcji:path.basename(file)
Z jakiej platformy pochodzi ścieżka? Ścieżki systemu Windows różnią się od ścieżek POSIX różnią się od ścieżek Mac OS 9 ścieżki różnią się od ścieżek RISC OS są różne ...
Jeśli jest to aplikacja internetowa, w której nazwa pliku może pochodzić z różnych platform, nie ma jednego rozwiązania. Jednak rozsądnym rozwiązaniem jest użycie zarówno „\” (Windows), jak i „/” (Linux / Unix / Mac, a także alternatywy w Windows) jako separatorów ścieżek. Oto wersja bez RegExp dla dodatkowej zabawy:
źródło
var path = '\\Dir2\\Sub1\\SubSub1'; //path = '/Dir2/Sub1/SubSub1'; path = path.split('\\').length > 1 ? path.split('\\').slice(0, -1).join('\\') : path; path = path.split('/').length > 1 ? path.split('/').slice(0, -1).join('/') : path; console.log(path);
Ates, twoje rozwiązanie nie chroni przed pustym łańcuchem jako wejściem. W takim przypadku kończy się niepowodzeniem
TypeError: /([^(\\|\/|\:)]+)$/.exec(fullPath) has no properties
.bobince, oto wersja nickf, która obsługuje ograniczniki DOS, POSIX i HFS (i puste ciągi znaków):
źródło
Poniższy wiersz kodu JavaScript poda nazwę pliku.
źródło
Nie bardziej zwięzłe niż odpowiedź nickf , ale ta bezpośrednio „wyodrębnia” odpowiedź zamiast zastępować niechciane części pustym ciągiem:
źródło
Pytanie „pobierz nazwę pliku bez rozszerzenia” znajduje się tutaj, ale nie ma na to rozwiązania. Oto rozwiązanie zmodyfikowane z rozwiązania Bobbiego.
źródło
Inny
Tutaj split ma wyrażenie regularne z klasą znaków
znaków Dwa znaki muszą być poprzedzone znakiem \
Lub użyj tablicy do podzielenia
W razie potrzeby byłby to sposób dynamicznego wypychania większej liczby separatorów do tablicy.
Jeśli
fullPath
jest to jawnie ustawione przez ciąg znaków w kodzie, musisz uciec od ukośnika odwrotnego !Lubić
"C:\\Documents and Settings\\img\\recycled log.jpg"
źródło
Używam:
Zastępuje ostatni,
\
więc działa również z folderami.źródło
źródło
Pełna odpowiedź to:
źródło
Niewiele funkcji do uwzględnienia w projekcie w celu określenia nazwy pliku z pełnej ścieżki dla Windows, a także bezwzględnych ścieżek GNU / Linux i UNIX.
źródło
źródło
Skopiuj pomyślnie swoje pytanie, pełny test
źródło
To rozwiązanie jest znacznie prostsze i ogólne, zarówno dla „nazwy pliku”, jak i „ścieżki”.
źródło
źródło
var file_name = file_path.substring(file_path.lastIndexOf('/'));
źródło