【问题标题】:Using javascript to Capitalize, Break it up with a new line every, and Add String to the beginning of each new line使用 javascript 大写,用新行分隔,并将字符串添加到每个新行的开头
【发布时间】:2016-03-16 03:12:44
【问题描述】:

使用 javascript (1) 将用户输入字符串中的所有字符大写,(2) 每 45 个字符换行一次,以及 (3) 添加特定字符串(“///////”例如)到每个新行的开头。

我想要一个简单的应用程序,我可以在其中复制和粘贴一串文本,并有一个函数来完成上述操作。

例如:
复制并粘贴“我是 JavaScript 新手,所以即使是这么简单的代码也很难写”并得到以下内容:

"
//////我是 JAVASCRIPT 新手,所以即使是这个简单的 C
//////ODE 很难写
"

我想,在未来,让它不会在中间截掉这样的单词,并且可以使用空格来找到新行应该在哪里,但这似乎有点现在很多。

我所拥有的只是大写功能:

var txt = prompt("Enter string of text");
var cap = txt.toUpperCase();
alert(cap);

但我希望它同时运行所有三个功能并alert() 最终产品。

【问题讨论】:

  • 同时运行所有三个函数”是什么意思?

标签: javascript string character line capitalize


【解决方案1】:

在“函数式编程风格”中,您可以这样做:

var txt = prompt("Enter string of text");
var cap = txt.toUpperCase().split('').reduce(function(agg, item, i) {
  if(i % 45 === 0) {
    if(i > 0) {
      agg.push('\r\n');
    }
    agg.push('//////');
  }
  agg.push(item);
  return agg;
  }, []).join('');
alert(cap);

基本上这里发生的是字符串是:

  1. 转换为大写。那么……
  2. 拆分成单个字符的数组。那么……
  3. 数组被“缩减”1 为一个新数组,其中包含交织的新行和“分隔符”字符串 (//////)。那么……
  4. 连接新数组以形成新字符串。

1 减少数组是一种按顺序迭代数组项并逐步生成单个“减少”结果的操作。通常,这用于对多个值求和等场景。在这段代码中,这不是该函数的“逻辑正确”用法,因为它不会减少任何内容,但它确实启用了函数式解决方案。

【讨论】:

  • 由于 OP 在 Javascript 中似乎是新的,您可能需要添加代码如何工作的解释。
  • @XO - 是的,我想你是对的,虽然我一直希望这会鼓励自学而不是用勺子喂
  • 即便如此,一个小小的描述将帮助 OP 和未来的读者理解代码在做什么,而不是仅仅给他们代码。
猜你喜欢
  • 1970-01-01
  • 2018-07-15
  • 2013-08-06
  • 2017-09-05
  • 2022-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多