【问题标题】:Javascript replace all "%20" with a spaceJavascript 用空格替换所有“%20”
【发布时间】:2013-12-26 23:23:18
【问题描述】:

有没有办法使用 JavaScript 将每个“%20”替换为空格。我知道如何用空格替换单个“%20”,但如何全部替换?

var str = "Passwords%20do%20not%20match";   
var replaced = str.replace("%20", " "); // "Passwords do%20not%20match"

【问题讨论】:

  • 你可以使用window.decodeURIComponent(),不过它会转换的不仅仅是'%20'。
  • 不,这不是完全重复的。有一个更深层次的问题,这里有一个成功解决这个问题的答案。

标签: javascript


【解决方案1】:

检查一下: How to replace all occurrences of a string in JavaScript?

简答:

str.replace(/%20/g, " ");

编辑: 在这种情况下,您还可以执行以下操作:

decodeURI(str)

【讨论】:

    【解决方案2】:

    百分比% 符号后跟两个十六进制数字(UTF-8 字符表示) 通常表示已编码为URI 一部分的字符串。这确保了原本具有特殊含义的字符不会干扰。在您的情况下,%20 可以立即识别为空格字符 - 虽然 reallyURI 中没有任何含义,但它被编码以避免将字符串分成多个 "部分”。

    不要误会我的意思,regex is the bomb!然而,任何值得关注的网络技术都已经在它的库中提供了工具来为你处理standards。为什么要重新发明轮子……?

    var str = 'xPasswords%20do%20not%20match';
    console.log( decodeURI(str) ); // "xPasswords do not match"
    

    Javascript 有 decodeURIdecodeURIComponent,它们与 encodeURIencodeURIComponent 对应物略有不同 - 您应该熟悉文档。

    【讨论】:

    • 我很惊讶地发现这是唯一不尝试实际替换字符串中的内容的答案。这是处理这种情况的正确方法。
    【解决方案3】:

    在正则表达式中使用global 标志:

    var replaced = str.replace(/%20/g, " ");
                                    ^
    

    【讨论】:

      【解决方案4】:

      使用unescape(stringValue)

      var str = "Passwords%20do%20not%20match%21";
      document.write(unescape(str))
      //Output
      Passwords do not match!
      

      使用decodeURI(stringValue)

      var str = "Passwords%20do%20not%20match%21";
       document.write(decodeURI(str))
      Space = %20
      ? = %3F
      ! = %21
      # = %23
      ...etc
      

      【讨论】:

      • decodeURIComponent 将按预期工作,不建议使用unescape - 有关详细信息,请参阅MDN documentation 顶部的巨大红色警告。
      【解决方案5】:

      如果你想使用 jQuery,你可以使用.replaceAll()

      【讨论】:

        【解决方案6】:

        这个方法使用decodeURI()方法,是最好的。

        var str = "Passwords%20do%20not%20match%21";
        alert(decodeURI(str))

        它是如何工作的:

        Space = %20
        ? = %3F
        ! = %21
        # = %23
        ...etc
        

        在 mozzila 文档 [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI] 中有一个很好的例子

        【讨论】:

          【解决方案7】:

          如果您需要在末尾删除空格,那么这里有一个解决方案: https://www.geeksforgeeks.org/urlify-given-string-replace-spaces/

          const stringQ1 = (string)=>{
            //remove white space at the end 
            const arrString = string.split("")
            for(let i = arrString.length -1 ; i>=0 ; i--){
              let char = arrString[i];
              
              if(char.indexOf(" ") >=0){
               arrString.splice(i,1)
              }else{
                break;
              }
            }
          
            let start =0;
            let end = arrString.length -1;
            
          
            //add %20
            while(start < end){
              if(arrString[start].indexOf(' ') >=0){
                arrString[start] ="%20"
                
              }
              
              start++;
            }
            
            return arrString.join('');
          }
          
          console.log(stringQ1("Mr John Smith   "))

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-12-03
            • 1970-01-01
            • 1970-01-01
            • 2018-01-16
            • 1970-01-01
            • 2018-04-15
            • 2012-07-22
            • 1970-01-01
            相关资源
            最近更新 更多