Проблема, которую я должен решить, - это сократить пути к файлам, заданные пользователем. Если вы этого не знаете, иногда в командной строке невозможно вводить пути с пробелами. Вам необходимо либо поместить путь в кавычки, либо переименовать пути с пробелами в «abcdef ~ 1».Изменение строки JavaScript (возможно, включает в себя регулярное выражение)
Пример: «C: \ Some Folder \ Some File.exe» должен стать «C: \ SomeFo ~ 1 \ SomeFi ~ 1.exe» (без учета регистра).
Я делаю функцию в JavaScript, чтобы попытаться сократить пути к файлам, используя эту идею.
function ShortenFilePath(FilePath){
var Sections = FilePath.split("\\")
for (Index = 0; Index < Sections.length; Index++){
while (Sections[Index].length > 6 && Sections[Index].match(" ") && !Sections[Index].match("~1")){
alert(Sections[Index])
Sections[Index] = Sections[Index].replace(" ","")
Sections[Index] = Sections[Index].substring(0,6)
Sections[Index] = Sections[Index] + "~1"
alert(Sections[Index])
}
}
var FilePath = Sections.join("\\")
alert(FilePath)
return FilePath
}
Проблема заключается в том, что уйдет из расширения файла и выплюнуть "C: \ SomeFo ~ 1 \ SomeFi ~ 1". Мне нужна помощь в получении этого расширения файла (возможно, через регулярное выражение). Если вы чувствуете, что эту функцию можно оптимизировать, пожалуйста, поделитесь своими мыслями.
ОБНОВЛЕНИЕ: Я считаю, что проблема решена.
ОБНОВЛЕНИЕ 2: Были проблемы с предыдущим кодом, поэтому я немного пересмотрел его.
ОБНОВЛЕНИЕ 3: свежий новый проблема. Хлоп. Если имя самого файла без расширения составляет менее 7 букв, оно будет отображаться как «name.e ~ 1.exe».
ОБНОВЛЕНИЕ 4: Я думаю, что я, наконец, исправил проблему. Я ДУМАЮ.
function ShortenFilePath(FilePath){
var Sections = FilePath.split("\\")
Sections[Sections.length - 1] = Sections[Sections.length - 1].substring(0,Sections[Sections.length - 1].lastIndexOf("."))
for (Index = 0; Index < Sections.length; Index++){
while (Index > 0 && Sections[Index].match(" ") && !Sections[Index].match("~1")){
Sections[Index] = Sections[Index].replace(/ /gm,"")
Sections[Index] = Sections[Index].substring(0,6) + "~1"
}
}
return Sections.join("\\") + FilePath.substring(FilePath.lastIndexOf("."))
}
Как вы знаете, короткое имя файла: 'longfilename.txt 'is:' LONGFI ~ 1.TXT'? Вероятно, это также может быть: 'LONGFI ~ 2.TXT' или:' LONGFI ~ 3.TXT. – ridgerunner