打印每个单词的第一个字母,然后打印第二个字母,然后打印第三个字母,依此类推



对不起,我是javascript的新手

我当前的输出,来自用户输入"多么美好的一天":

what
abea
utif
ulda
y

我怎样才能取每个单词的第一个字母来获得这样的输出:

wauuy hbtl aeid tafa

我试过这个:

var output = '';
var counter = 0;
var newStr2 = newStr.split('n');
for (let i = 0; i < newStr2.length; i++) {
output = output + newStr2[counter].substr(0,1)
counter++
}

有没有办法读取行和列? 这样我就可以取每一行的第一个字母,然后取一列

谢谢。

您可以使用两个 for 循环来实现。一个用于单词中的每个字母,一个用于数组的每个元素(无单词(。

var newStr = `what
abea
utif
ulda
y`
var output = '';
var newStr2 = newStr.split('n');
for(var j = 0; j < newStr2[0].length; j++) {
for (let i = 0; i < newStr2.length; i++) {
if(newStr2[i][j]) {
output = output + newStr2[i][j];
}      
}
output += ' ';
}

console.log(output);

更新: if 条件是检查某个单词是否具有该字符数。例如,最后一个单词仅包含一个字符 (y(。因此,在新输出中,它为其他地方打印undefined。因此,我们检查该单词是否在该索引中包含字符,如果不是,则忽略。检查以下代码,您将更好地理解。

var newStr = `what
abea
utif
ulda
y`
var output = '';
var newStr2 = newStr.split('n');
for(var j = 0; j < newStr2[0].length; j++) {
for (let i = 0; i < newStr2.length; i++) {
output = output + newStr2[i][j];
}
output += ' ';
}

console.log(output);

使用正则表达式将输入的每个第 4 个字符(无空格(拆分为一个数组,然后使用reduce将它们组合在一起:

function transform(input) {
const wordCount = input.split(' ').length;
const chunked = input.replace(/ /g, '')
.match(new RegExp('\w{1,' + wordCount + '}', 'g'));
const output = chunked.reduce((accum, chunkWord) => {
[...chunkWord].forEach((char, i) => (
accum[i] = (accum[i] || '') + char
));
return accum;
}, {});
return output;
}
console.log(transform('what a beautiful day'));
console.log(transform('foo foo bar bar'));
console.log(transform('fooo bar baz'));

相关内容

最新更新