Лучший способ нарезать строку? - PullRequest
0 голосов
/ 10 апреля 2019

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

Мой код JavaScript принимает строку и создает массив индексов, где пробелы идентифицируются с помощью операции indexOf (). Затем он проходит через цикл срезов, который вычитает различные индексы, чтобы получить длину строки для среза, и индекс пространства, чтобы найти ее в существующей строке. Выводом является последний файл console.log, и он, кажется, делает то, что мне нужно, даже при передаче случайных строк.

var sp = " ";
var myStr = "I am a \"double quoted\" string inside \"double quotes\""
var twoStr = 'I am a string "and I am a string"';
var stringadd = "and I can slice whenever I want."
var threeStr = myStr + sp + twoStr;
var fourStr = threeStr + sp + stringadd;
console.log("string length = ", fourStr.length);

var i = 0;
var n = 0;
var sentence = [i];
for (n = 0; n < fourStr.length; n++) {
  var pos = fourStr.indexOf(sp, n) //find the index of the space
  if (n == pos) {
    sentence[i] = pos; //place the index in an array
    i++;
  } else(i);
}

var arraysent = fourStr.split(sp); //test split function for string
console.log("Array Sentence:\n", arraysent)

console.log("space index length:\n", sentence.length) //check array length
console.log("space index array:\n", sentence) //display array with "space" indexes
console.log("sliced string:\n", fourStr.slice(sentence[0] - 1, sentence[0])); //display first index 

var j = 0;
for (j = 0; j < sentence.length; j++) {
  var slicesent = fourStr.slice(sentence[j], sentence[j + 1]); //automate remaining index display
  console.log(slicesent);
}

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

Спасибо

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

Вы должны использовать .split

var sp = " ";
var myStr = "I am a \"double quoted\" string inside \"double quotes\""
var twoStr = 'I am a string "and I am a string"';
var stringadd = "and I can slice whenever I want."
var threeStr = myStr + sp + twoStr;
var fourStr = threeStr + sp + stringadd;


const result = [myStr, twoStr, stringadd, threeStr, fourStr].map(string => string.split(sp));

console.log(result);
0 голосов
/ 10 апреля 2019

Это буквально сделано String.split()

function logWordsBySpaces(str){
   let arr = str.split(" ");

   arr.forEach(function(a){ console.log(a); })
}

logWordsBySpaces("Karma karma karma karma karma chameleon!")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...