【问题标题】:How to remove the first and the last character of a string如何删除字符串的第一个和最后一个字符
【发布时间】:2013-11-25 14:54:00
【问题描述】:

我想知道如何在 Javascript 中删除字符串的第一个和最后一个字符。

我的网址显示为/installers/,而我只想要installers

有时会是/installers/services/,而我只需要installers/services

所以我不能简单地去掉斜线/

【问题讨论】:

  • 我试图去掉它的第一个和最后一个字符。我只是抓取网址
  • 我只是想知道为什么似乎没有人注意到修剪斜线(如文本所示)和无条件删除字符串的第一个和最后一个字符(如标题所示)并不完全相同。但它解释了下面的广泛答案。

标签: javascript string


【解决方案1】:

给你

var yourString = "/installers/";
var result = yourString.substring(1, yourString.length-1);

console.log(result);

或者您可以按照Ankit Gupta 的建议使用.slice

var yourString = "/installers/services/";

var result = yourString.slice(1,-1);

console.log(result);

slicesubstring 的文档。

【讨论】:

  • 但url不以斜线结尾,需要1个字符
  • @Martijn 这正好回答了这个问题。没有人说你不想剥离除斜线以外的任何东西;)。来自我的 +1 - 代码应该说明它应该做什么,而不是像这里的正则表达式示例。
  • 但是如果你从哪里移动到另一台服务器,斜杠可能不存在(或者你可能故意配置了更改)。不反对,只是指出:)
  • 尾随斜杠总是存在,因为它指向 index.php 文件...
【解决方案2】:

使用slice 可能会更好:

string.slice(1, -1)

【讨论】:

    【解决方案3】:

    如果您需要删除字符串的第一个字母

    string.slice(1, 0)
    

    对于删除最后一个字母

    string.slice(0, -1)
    

    【讨论】:

      【解决方案4】:

      如果您不总是有一个起始或尾随斜杠,您可以对其进行正则表达式。虽然正则表达式比简单的替换/切片要慢,但它有更多的逻辑空间:

      "/installers/services/".replace(/^\/?|\/?$/g, "") 
      
      # /installers/services/ -> installers/services
      # /installers/services -> installers/services
      # installers/services/ -> installers/services
      

      正则表达式解释:

      • ['开始于'^] + [可选?] + [斜线]:^/?,转义-> ^\/?
      • 管道(|)可以读作or
      • ['以'结尾'$] + [可选?] + [斜线] -> /?$,转义 -> \/?$

      组合起来将是 ^/?|/$ 而不会转义。可选的第一个斜杠或可选的最后一个斜杠。
      从技术上讲,它不是“可选”,而是“零次或一次”。

      【讨论】:

      • 问题是我不能去掉“/”,因为有时我需要它们来分隔 url 的内部部分
      • 内斜线不会消失。生病编辑和解释正则表达式
      • 我认为你需要全局标志来完成这项工作:"/installers/services/".replace(/^\/?|\/?$/g, "")
      【解决方案5】:

      我认为 jQuery 与此无关。无论如何,请尝试以下操作:

      url = url.replace(/^\/|\/$/g, '');
      

      【讨论】:

      • 这看起来是迄今为止最正确的一个。唯一的事情,我会添加一个量词,以防万一:/^\/+|\/+$/g
      【解决方案6】:

      你可以这样做:

      "/installers/services/".replace(/^\/+/g,'').replace(/\/+$/g,'')
      

      此正则表达式是一种常用方法,可以与许多语言中使用的 trim 函数具有相同的行为。

      修剪功能的可能实现是:

      function trim(string, char){
          if(!char) char = ' '; //space by default
          char = char.replace(/([()[{*+.$^\\|?])/g, '\\$1'); //escape char parameter if needed for regex syntax.
          var regex_1 = new RegExp("^" + char + "+", "g");
          var regex_2 = new RegExp(char + "+$", "g");
          return string.replace(regex_1, '').replace(regex_2, '');
      }
      

      这将删除字符串开头和结尾的所有/。它处理像///installers/services///这样的情况

      你也可以这样做:

      "/installers/".substring(1, string.length-1);
      

      【讨论】:

        【解决方案7】:

        你可以使用substring方法

        s = s.substring(0, s.length - 1) //removes last character
        

        另一种选择是slice 方法

        【讨论】:

          【解决方案8】:

          使用.replace(/.*\/(\S+)\//img,"$1")

          "/installers/services/".replace(/.*\/(\S+)\//img,"$1"); //--> services
          
          "/services/".replace(/.*\/(\S+)\//img,"$1"); //--> services
          

          【讨论】:

          • 这不符合 OP 的要求。
          【解决方案9】:
          url=url.substring(1,url.Length-1);
          

          这样你就可以使用目录,如果它像.../.../.../...等。

          【讨论】:

          • url.length 不是url.Length
          猜你喜欢
          • 2011-04-11
          • 1970-01-01
          • 2022-11-01
          • 2012-05-13
          • 1970-01-01
          • 2014-07-13
          • 2013-12-12
          • 2011-12-15
          相关资源
          最近更新 更多