JavaScript中的转换字符串

JavaScript中的转换字符串,javascript,Javascript,你会怎么做 我正在尝试编写一个字符串转换器,它将字符串中的某些字母大写 例子 lorem lipum lampum => lorem Lipum lampum popud pidem papusek => popud pidem Papusek 谢谢 这应该每五个字符串随机大写一次: var s = "lorem lipum lampum"; var a = s.split(" "); for (var i=0; i < a.length; i++) { if (Math.

你会怎么做

我正在尝试编写一个字符串转换器,它将字符串中的某些字母大写

例子

lorem lipum lampum => lorem Lipum lampum
popud pidem papusek => popud pidem Papusek

谢谢

这应该每五个字符串随机大写一次:

var s = "lorem lipum lampum";
var a = s.split(" ");
for (var i=0; i < a.length; i++) {
 if (Math.random() > 0.2) {
  a[i] = a[i].charAt(0).toUpperCase() + a[i].substring(1);
  }
 }
s = a.join(" ");

如果您可以最终设置模式,请使用正则表达式查找需要大写的部分。如果您使用的是字典,那么状态机模式是最好的。为了便于编码,最快的方法是一次浏览一个单词并找到符合模式的单词。如果性能是主要需求,有一些棘手的方法可以提高性能,包括(在极端情况下)使用二进制。

很难找出资本化的规则是什么:O“字符串中的某些字母”:哪些字母?所有
Li
s?所有
Pa
s?每一秒,第三个字?@Marcel,可能是第三个,第二个,或者其他什么。这取决于传递的参数。哪个“传递的参数”?你的问题中没有争论。参数可以接受哪些值,以及它如何影响资本化算法?这就是我一直在寻找的。非常感谢。正则表达式对于这项工作来说是一个有点沉重的工具。看看Rob的答案,如何更有效地实现这一点。我不确定我是否同意,但JavaScript可能不是最好的正则表达式语言。:-)那你为什么建议使用正则表达式呢?;-)
var doIt = function (s, which) {
  var a = s.split(" ");
  a[which] = a[which].charAt(0).toUpperCase() + a[which].substring(1);
  return a.join(" ");
 }