【问题标题】:Javascript: Saving a path with a wildcard into a variableJavascript:将带有通配符的路径保存到变量中
【发布时间】:2012-12-06 01:20:27
【问题描述】:

我想将带有通配符的路径保存到带有 JS 的变量中。路径如下所示:

09328402984923kjh234243/2/somename.xml

路径的第一部分和第二部分可以更改,因此我需要在其中添加一些通配符,因为文件夹名称不可预测。

我用 RegEx 尝试过这样的事情

var position = '\.?/\.?/somename.xml';

我现在一直在解决这个问题,我在 stackoverflow(或其他地方)上找到的每个样本都没有涵盖我的情况。我什至不确定RegEx能否解决我的问题...... 是否可以将带有通配符的路径保存到变量中?如果可能,RegEx 是否正确?

提前致谢

【问题讨论】:

  • 不知道你在问什么。你打算如何使用你的position 变量?
  • 你用这个路径做什么?这两个文件夹值从何而来?
  • 如果您想保存正则表达式,请使用 / 而不是引号:var position = /\.?/\.?/somename.xml/; - 虽然我不确定这是否能回答您的问题,因为正如其他人所说,很难理解您想要的结果。
  • 好的,我会尝试更好地解释它:我正在使用位置变量来获取 xml 文件的位置来读取它$.get(position, function(XMLmediaArray) 现在的问题是带有文件夹的包并且 xml 文件是动态生成的并且可以更改,因此我需要一个具有某种通配符的变量,例如 /*/*/somename.xml,因为结构始终相同。我不想在每次新生成文件夹时都调整变量。

标签: javascript regex variables wildcard


【解决方案1】:

我不确定您最终要完成什么,但如果您需要“动态替换”字符串中的占位符,请使用 Javascripts String.prototype.replace 方法。

例子:

var position = 'ph1/ph2/somename.xml';

var path_one = '09328402984923kjh234243',
    path_two = '2';

然后我们就可以这样了

position = position
               .replace( 'ph1', path_one )
               .replace( 'ph2', path_two );

这将创建09328402984923kjh234243/2/somename.xml的结果

【讨论】:

  • 这不是我想要的(见我上面的评论)
  • @Lena:我仍然不知道你想做什么。 “(..)所以我需要一个变量......”出于什么目的?你到底想做什么?
  • 变量不是绝对必要的。我只是认为使用变量会更容易。也可以直接在此处使用带有通配符的路径$.get(*/*/somename.xml, function(XMLmediaArray) 通配符是必要的,因为路径应该适合 23423jf/2/somename.xml 和 3234jf/1/somename.xml 之类的内容,因为路径可以更改跨度>
  • @Lena:如果我说对了,问题就归结为,没有任何方法不是由您自己或任何了解字符串语义的人编写的,都无法使用"*/*/some.xml"。因此,将这样的通配符字符串传递给.get() 是没有意义的。我能看到的唯一意义是,如果您将这些“部分”数据作为变量,并且您想从这些变量中创建整个字符串。我在上面回答了它是如何工作的。如果我还是不明白,请再来一次。
  • 我想我刚刚了解到 Javascript 不能做我想做的事。我希望变量中的通配符使 Javascript “找到”正确的路径,因为我不知道。就像批处理一样,当您执行 /*/.xml 之类的命令时。很抱歉我的问题不够清楚。
【解决方案2】:

我认为您可能正在寻找的正则表达式是^(.+?)\/(.+?)\/somename\.xml$。不过不知道你想用它做什么。

【讨论】:

    【解决方案3】:

    如果您从路径作为字符串开始,并希望使用 JavaScript 提取两个文件夹部分,您可以这样做;

    var path = '09328402984923kjh234243/2/somename.xml'
    var regex = /[0-9a-zA-Z]*\//g
    
    var folders = path.match(regex)
    

    然后你有folders[0] 的值09328402984923kjh234243/ 和folders[1] 的值2/。

    正则表达式使用末尾的g modifier 进行全局匹配并选取所有匹配项。它目前也只会匹配文件夹名称中的字母数字字符。

    【讨论】:

      猜你喜欢
      • 2021-10-31
      • 1970-01-01
      • 2011-06-14
      • 2018-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-23
      • 1970-01-01
      相关资源
      最近更新 更多