var alphabet = "FIN SLHOJVHEN GYKOHU";
我想把它每两个字符分开,这样它就可以打印“我爱你“我已经试过了,但是没用
for (var i = 0 ; i \< alphabet.length ; i+=2 ){ alphabet.split(i)
请纠正我
ccrfmcuu1#
可以将字符串转换为数组,对其进行筛选并使其再次成为字符串。
let alphabet = "FIN SLHOJVHEN GYKOHU"; alphabet = [...alphabet].filter((_, i) => i%2).join(""); console.log(alphabet); //I LOVE YOU;
ut6juiuv2#
同样,此操作会产生I LOVE YOU(regex101 demo)。
I LOVE YOU
// the string let alphabet = 'FIN SLHOJVHEN GYKOHU'; // capture ^ start or chr, match latter chr alphabet = alphabet.replace(/(^|.)./g, '$1'); console.log(alphabet);
2nbm6dog3#
由于split函数将根据您传递的分隔符拆分给定的字符串,因此在我看来,您希望首先拆分编码字符串中包含的单词(使用空格),然后才将偶数位置的字符包含在解码字符串中。这是一个实现以下目标的演示:
split
const encoded = "FIN SLHOJVHEN GYKOHU"; const words = encoded.split(' '); let decoded = ''; words.forEach((word)=>{ for (let i=1;i<word.length;i+=2){ decoded += word[i]; } decoded += ' '; }); console.log(decoded);
oprakyz74#
使用正则表达式替换方法,我们可以尝试:
var alphabet = "FIN SLHOJVHEN GYKOHU"; var output = alphabet.replace(/[A-Z]([A-Z]|(?=\s))/g, "$1"); console.log(output);
下面是正则表达式模式的解释:
[A-Z]
(
|
(?=\s)
)
换句话说,我们匹配一个奇数字母,然后捕获下一个字母,除非这个奇数字母恰好是单词的最后一个字母,然后我们用捕获的偶数字母替换,如果可能的话。
mv1qrgav5#
你已经有不同的方法来做它,我添加一个,所以你会完全混淆!呵呵这个是递归的:
...循环直到字母表为空你的toPrint有我爱你当然不是最快的一个,但很好。
let alphabet = "FIN SLHOJVHEN GYKOHU"; let toPrint = ''; do { let temp = alphabet.slice(0, 2); toPrint += temp[1]; alphabet = alphabet.slice(2, alphabet.length); } while (alphabet !== ''); console.log(toPrint);
s3fp2yjn6#
您可以从1开始循环,因为您需要每隔一个字符执行一次循环,请注意,\<应为<在循环中,i是字符的位置,因此您仍然需要获取该位置的字符,然后组装结果字符串。
\<
<
i
var alphabet = "FIN SLHOJVHEN GYKOHU"; var result = ""; for (var i = 1; i < alphabet.length; i += 2) { result += alphabet[i]; } console.log(result);
如果您要将空格考虑在内,并且只取得第二个非空白字符,您可以:
const alphabet = " FIN SLHOJVHEN GYKOHU "; const result = alphabet .split(/\s+/) .filter(Boolean) .map(s => s.split("").filter((s, i) => i % 2).join("")) .join(" "); console.log(result);
如果您的浏览器支持正则表达式的正lookbehind:
const alphabet = " FIN SLHOJVHEN GYKOHU "; const result = alphabet .split(/\s+/) .filter(Boolean) .map(s => s.match(/(?<=^(?:..)*.)./g).join("")) .join(" "); console.log(result);
dffbzjpn7#
var alphabet = "FIN SLHOJVHEN GYKOHU"; const arrayAlpha = alphabet.split(''); let stringToPrint = ''; for(let i=1; i<arrayAlpha.length; i+=2){ stringToPrint = stringToPrint + arrayAlpha[i] } console.log(stringToPrint)
7条答案
按热度按时间ccrfmcuu1#
可以将字符串转换为数组,对其进行筛选并使其再次成为字符串。
ut6juiuv2#
同样,此操作会产生
I LOVE YOU
(regex101 demo)。2nbm6dog3#
由于
split
函数将根据您传递的分隔符拆分给定的字符串,因此在我看来,您希望首先拆分编码字符串中包含的单词(使用空格),然后才将偶数位置的字符包含在解码字符串中。这是一个实现以下目标的演示:
oprakyz74#
使用正则表达式替换方法,我们可以尝试:
下面是正则表达式模式的解释:
[A-Z]
匹配单个(奇数)大写字母(
打开捕获[A-Z]
大写字母|
或(?=\s)
先行查找并查找空格)
换句话说,我们匹配一个奇数字母,然后捕获下一个字母,除非这个奇数字母恰好是单词的最后一个字母,然后我们用捕获的偶数字母替换,如果可能的话。
mv1qrgav5#
你已经有不同的方法来做它,我添加一个,所以你会完全混淆!呵呵
这个是递归的:
...循环直到字母表为空
你的toPrint有我爱你
当然不是最快的一个,但很好。
s3fp2yjn6#
您可以从1开始循环,因为您需要每隔一个字符执行一次循环,请注意,
\<
应为<
在循环中,
i
是字符的位置,因此您仍然需要获取该位置的字符,然后组装结果字符串。如果您要将空格考虑在内,并且只取得第二个非空白字符,您可以:
如果您的浏览器支持正则表达式的正lookbehind:
dffbzjpn7#