Возьмите путь из строки, содержащей пробелы

1

Я пытаюсь взять строку, такую как "turtle util/java test" и вернуть "util/java test". Это в окнах, поэтому допускаются пробелы в файлах и папках.

В настоящее время у меня есть:

    let inputLength = line.split(" ").length;//if there preceding text
    let inputStrip = line.split(" ")[inputLength - 1];

Однако это не работает для файлов/папок с пробелами. Проблема в том, что перед пространством, которое мне нужно удалить из строки, может существовать предшествующий текст, такой как "черепаха".

Таким образом, у меня есть строка: "turtle add Documents/Test Settings/file.js" Я хочу, чтобы результат был: "Documents/Test Settings/file.js"

или я мог бы: "Documents/Test Settings/file.js", и я хочу, чтобы результат был: "Documents/Test Settings/file.js"

или я мог бы: "добавить Documents/Test Settings/file.js", и я хочу, чтобы результат был: "Documents/Test Settings/file.js"

Однако я мог бы также иметь экстремальный вид: "word git turtle add catalog field doc/A folder/my worries/going down/turtle/file.txt"

Это должно стать: "папка doc/A/my worries/going down/turtle/file.txt"

Цель состоит в том, чтобы удалить символы, которые могут быть ничем или несколькими словами, перед файловым путем, однако путь к файлу может содержать пробел.

Спасибо!

  • 0
    Можете ли вы расширить свой вопрос с помощью образца ввода и вывода образца? Я не очень понимаю, что вы пытаетесь сделать.
  • 0
    Покажите, какие тестовые случаи здесь задействованы. До сих пор из того, что я понял, вы можете искать / Java и удалить все до него. Это будет делать, а затем внести дополнительные необходимые изменения, чтобы получить желаемый результат.
Теги:

3 ответа

0
Лучший ответ

Вот так. :)

function fetchPath(command) {
  var commandArray = command.split(" ");
  var pathArray = [];
  var i=commandArray.length-1;
  // push the last one which is for sure is a part of the path
  pathArray.push(commandArray[i--]); 

  for(i; i>=0; i--) {
      if(commandArray[i].indexOf('/') > -1) {
        pathArray.unshift(commandArray[i]);
      }
  }

  return pathArray.join(' ');
}


console.log(fetchPath('turtle add Documents/Test Settings/file.js'));
console.log(fetchPath("add Documents/Test Settings/file.js"));
console.log(fetchPath('Documents/Test Settings/file.js'));
console.log(fetchPath('word git turtle add catalog field doc/A folder/my worries/going down/turtle/file.txt'));
0

Вы могли бы сделать что-то вроде этого:

let path = 'turtle util/java test';
let firstIndexOfSpace = path.indexOf(' ');

let removedTurtle = path.substring(firstIndexOfSpace);

Возможно, вы должны использовать охрану, потому что firstIndexOfSpace может быть -1.

0

Используйте метод shift() или splice().

Используя метод shift()

var input = "turtle util/java test".split(" ");
input.shift();
input.join(" ");

Используя метод splice()

var input = "turtle util/java test".split(" ");
    input.splice(0, 1);
    input.join(" ");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню