我正在嘗試創建一個可以做兩件事的高階函式。
首先:它會檢查字串的第一個字母是否是元音,如果是,它將附加在字串“way”的末尾。
我已經用這段代碼做到了:
const vowel = /[aeiou]/;
const consonant = /^[^aeiou]/gi;
const chaVow = 'way';
const chaCon = 'ay';
function pigLatinVowel(str) {
if (!str.charAt(0) == vowel) {
return str
} else {
return str.concat(chaVow)
}
}
console.log(pigLatinVowel("algorithm"));
然后我需要撰寫代碼來運行特定任務,同時檢查輔音。它必須檢查字串的第一個字母(或一組字母)是否是輔音,將其推到字串的末尾并附加字串'ay'。我遇到了正則運算式的問題,它不完全是我正在尋找的東西,但我完全迷失了。這是我到目前為止使用的代碼:
const vowel = /[aeiou]/;
const consonant = /^[^aeiou]/gi;
const chaVow = 'way';
const chaCon = 'ay';
function pigLatinConsonant(str) {
str = str.split('');
let filtered = str.filter(a => a.match(consonant));
return filtered;
}
console.log(pigLatinConsonant("glove"));
理想情況下,正則運算式會在第一個元音處停止,所以它不會給我這個輸出:[ 'g', 'l', 'v' ]
顯然這個功能還沒有完成,還有一些作業要做。我不想要完整的答案,因為我將如何創建 HoF 和其余部分,我正在通過 @FreeCodeCamp 課程學習,我對此很固執,但我在這一步失敗了:(。
也許我在其他地方失敗了,但到目前為止,這個功能讓我發瘋。
非常感謝幫助!
uj5u.com熱心網友回復:
您可以使用帶有捕獲組的正則運算式來獲取字串中第一個元音之前的所有輔音/^([^aeiou] )[aeiou]/i。然后將您的邏輯基于以下結果match()
const atternpay = /^([^aeiou] )[aeiou]/i;
const chaVow = 'way';
const chaCon = 'ay';
function pigLatinConsonant(str) {
let con_prefix = str.match(atternpay);
if (null === con_prefix)
return str chaVow;
return str.substring(con_prefix[1].length) con_prefix[1] chaCon
}
console.log(pigLatinConsonant("glove"));
console.log(pigLatinConsonant("also"));
uj5u.com熱心網友回復:
使用匹配字串開頭的輔音序列的正則運算式:
function startingConsonants(string) {
let m = string.match(/^[^aeiou] /);
return m && m[0];
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/492283.html
標籤:javascript 正则表达式 功能
