gpt4 book ai didi

javascript - 随机化所有字符串字符的大写/小写

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:02:33 28 4
gpt4 key购买 nike

有点奇怪的要求,我知道。但是我一直在寻找解决这个问题的方法已经有一段时间了。这是我正在寻找的效果:

var myString = "Hello I am randomly capitalized"

期望的函数结果:

hElLO i aM rAnDOmlY caPiTAlizED

我想这最好以一种或另一种方式使用 javascript 数组来完成。只是在寻找一些创意。谢谢你!

最佳答案

这是一种方式

myString.split('').map(function(c){
return c[Math.round(Math.random())?'toUpperCase':'toLowerCase']();
}).join('');

如果需要,您可以将其作为原型(prototype)方法添加到字符串对象上以便于访问:

String.prototype.toRandomCase = function() {
return this.split('').map(function(c){
return c[Math.round(Math.random())?'toUpperCase':'toLowerCase']();
}).join('');
}

然后通过

访问
console.log(myString.toRandomCase());

对其工作原理的一些解释:

  1. String.split方法用于将字符串拆分为单个字符的数组。
  2. Array.map功能被使用。这需要一个应用于数组中每个元素的回调函数,并返回一个新的结果数组,其中每个值由 map 函数返回。
  3. map 功能内部
    1. Math.round(Math.random())用于随机性
    2. 将其结果与三元运算符一起使用以获得 toLowerCasetoUpperCase Math.Round(Math.random())?'toLowerCase':'toUpperCase'
    3. 三元运算符的结果用于通过字符的数组引用访问相关函数属性,然后调用。 c[<ternary here>]()
  4. 最后它使用 Array.join map 结果的方法函数调用以将结果数组连接回字符串。

代码高尔夫(效率)

RobG 的回答比我的更有效(请为他的回答点赞)

String.prototype.toRandomCase = function() {
return this.toLowerCase().split('').map(function(c){
return Math.random() < .5? c : c.toUpperCase();
}).join('');
}

如果有人有进一步改进的建议 - 请评论或编辑答案的这一部分

关于javascript - 随机化所有字符串字符的大写/小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27596270/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com