【问题标题】:Randomize each characters casing in a string随机化字符串中的每个字符大小写
【发布时间】:2020-08-07 15:53:19
【问题描述】:

我正在尝试随机化字符串中的每个字符大小写。到目前为止,我的代码如下:

var message = 'This message is for testing'
    
            for (var i = 0; i < message.length; i++) {
                var random_number = Math.round(Math.random() * 10 + 1);
                if(random_number % 2 == 0) {
                    message.charAt(i).toUpperCase();
                }
        }
       console.log(message)

问题是即使通过console.log给出字母和数字,它也显示数字会导致大写,但字母保持低位

【问题讨论】:

  • message.charAt(i).toUpperCase() 返回字符,但您需要对其进行处理。无论如何,字符串是不可变的,所以……
  • console.log(message.replace(/\w/, c=&gt;Math.random()&lt;0.5 ? c : c.toUpperCase()));
  • 字符串是 javascript 中的原语,这意味着它们无法更改。当您在字符串上运行任何方法时,例如 charAt() 或 toUpperCase(),它会返回一个新字符串,而不会理会旧字符串。如果你创建了一个像var myThing = "foo"; 这样的变量然后更改它myThing = "bar",你还没有更改字符串“foo”。它仍然是“foo”。您只更改了分配给变量 myThing 的内容。其他原语是布尔值、数字、未定义、null 和 NaN。

标签: javascript


【解决方案1】:

您只需将更改存储在例如不同的字符串中。

var message = 'This message is for testing';
var newMessage = '';

for (var i = 0; i < message.length; i++) {
    var random_number = Math.round(Math.random() * 10 + 1);
    if(random_number % 2 == 0) {
        newMessage += message.charAt(i).toUpperCase();
    }else{
        newMessage += message.charAt(i);
    }
}
console.log(newMessage);

【讨论】:

    【解决方案2】:

    构建一个新的字符串,为 char 随机添加大写/小写字符。

    var message = 'This message is for testing'
    let result  ="";
    for (var i = 0; i < message.length; i++) {
      var random_number = Math.round(Math.random() * 10 + 1);
      if(random_number % 2 == 0) {
        result += message.charAt(i).toUpperCase();
      } else {
        result += message.charAt(i);
      }
    }
    console.log(result)

    【讨论】:

      【解决方案3】:

      Ciao,将 char 连接到如下示例的字符串:

      var message = 'This message is for testing'
      let stringresult = "";    
                  for (var i = 0; i < message.length; i++) {
                      var random_number = Math.round(Math.random() * 10 + 1);
                      if(random_number % 2 == 0) {
                          stringresult += message.charAt(i).toUpperCase();
                      }
                      else stringresult += message.charAt(i);
              }
             console.log(stringresult)

      【讨论】:

      • 更快。 :-) 如果你不介意我问的话,我在哪里可以找到如何进行 sn-p?
      • :) 是的,但只需要几秒钟...对于 sn-p 阅读 this
      猜你喜欢
      • 2018-01-14
      • 2015-02-20
      • 1970-01-01
      • 2014-05-04
      • 2012-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多