我試圖弄清楚如何在不使用 split() 但使用 charAt() 函式的情況下從陣列中的句子中拆分單詞。
function sentenceToWordArray(sentence) {
let stringArray = [""]
let j = 0
for (let i = 0; i < sentence.length; i ) {
if (sentence.charAt(i) == " ") {
j ;
stringArray.push("")
} else {
stringArray[j] = sentence.charAt(i)
}
}
return stringArray
}
現在我的代碼可以作業了,但是我遇到了一些問題,例如“Hello World”變成“Hello”、“World”,但是如果我添加額外的空格,例如“Hello World”,它會輸出 ['', 'hello' , '', '那里', '']。有沒有辦法去掉多余的空格?
uj5u.com熱心網友回復:
如果您只想查找輸入句子中的所有單詞,您可以使用match()并避免完全拆分:
var input = " Hello World ";
var words = input.match(/\w /g);
console.log(words);
uj5u.com熱心網友回復:
您可以使用trim()方法,該方法從開頭和結尾修剪空格string
function sentenceToWordArray(sentence) {
let stringArray = [""]
let j = 0
const trimedSentence = sentence.trim()
for (let i = 0; i < trimedSentence.length; i ) {
if (trimedSentence.charAt(i) == " ") {
j ;
stringArray.push("")
} else {
stringArray[j] = trimedSentence.charAt(i)
}
}
return stringArray
}
console.log(sentenceToWordArray('Hello, World'));
console.log(sentenceToWordArray(' Hello, World'));
console.log(sentenceToWordArray('Hello, World '));
uj5u.com熱心網友回復:
另一個快速修復:
function sentenceToWordArray(sentence) {
let stringArray = [""]
let j = 0
for (let i = 0; i < sentence.length; i ) {
if (sentence.charAt(i) == " ") {
j ;
stringArray.push("")
} else {
stringArray[j] = sentence.charAt(i)
}
}
return stringArray.filter(w => w.length > 0) // <-- I added this
}
uj5u.com熱心網友回復:
您將需要一種稱為“狀態機”的東西(https://en.wikipedia.org/wiki/Finite-state_machine)。基本上,您的函式處于一組狀態。對于每個新輸入(=字符),根據當前狀態,狀態會更改為另一個狀態,并且會執行一些操作作為副作用。
例子:
const STATE_BEGIN = 1 // no last character
const STATE_SPACE = 2 // the last character was a space
const STATE_NOSPACE = 3 // the last character was not a space
function split(text) {
let state = STATE_BEGIN
let words = []
for (let char of text) {
let isSpace = char === ' '
switch (state) {
case STATE_BEGIN:
case STATE_SPACE:
if (!isSpace) {
words.push(char)
state = STATE_NOSPACE
} else {
state = STATE_SPACE
}
break;
case STATE_NOSPACE:
if (!isSpace) {
words[words.length - 1] = char
state = STATE_NOSPACE
} else {
state = STATE_SPACE
}
break;
}
}
return words;
}
//
text = ` How razorback-jumping frogs can level six piqued gymnasts!`
console.log(split(text))
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/525601.html
標籤:javascript数组
