zoukankan      html  css  js  c++  java
  • JavaScript之倔强的字符串

    关于倔强的JavaScript字符串:不可以被修改

    我们是字符串
    我们的口号是:你可以消灭我,但是你不能改变我

    JavaScript字符串是不可改变的,当真是这样的吗?

    让我们来试验一下。

    var name = "Coder-Monkey"
    console.log(name[0])     // C
    console.log(name[11])    // y
    

    以上结果表明,字符串可以通过下标来访问。

    试着修改一下:

    name[0] = "X"
    name[11] = "X"
    console.log(name)       // Coder-Monkey
    

    果然有骨气,改不动。

    • JS中,字符串作为固定的常量值存储在堆
    • 字符串的值不可通过下标来改变

    不能改变这一点,似乎超出很多人的想像,平时编码时的经验表明可以改变啊。。

    其实,那不是改变,而是重新赋值而已,指向了另一个字符串所在的内存地址。

    就像这样,是可以的:

    name = "CoderMonkie"
    console.log(name)       // CoderMonkie
    

    那么,当需要“修改”原有字符串,而不是重新赋值一个不相干的值时怎么办呢?

    看使用场景,如果明确修改前修改后的内容,可以用字符串的replace方法替换。

    如果像开始的示例中那样,只修改指定位置,那么我们可以绕一个圈子来模拟修改操作。

    • 通过字符串的split('')方法将字符串转为数组
    • 通过数组下标修改数组
    • 通过数组的join('')方法再将数组连接成字符串

    以上,完成。

    Talk is cheep, so show you the code.

    var arr = name.split('')
    arr[0] = 'X'
    arr[11] = 'X'
    name = arr.join('')
    
    console.log(name)
    // XoderMonkiX
    
  • 相关阅读:
    ACdream 1224 Robbers (贪心)
    HDU 4320 Arcane Numbers 1 (质因子分解)
    在脚本中重定向输入
    呈现数据
    shell中的for、while、until(二)
    shell中的for、while、until
    C 指针疑虑
    结构化命令
    fdisk -c 0 350 1000 300命令
    PC机上的COM1口和COM2口
  • 原文地址:https://www.cnblogs.com/CoderMonkie/p/cannot-modify-string-in-js.html
Copyright © 2011-2022 走看看