【问题标题】:Remove everything after last backslash删除最后一个反斜杠后的所有内容
【发布时间】:2013-01-22 15:44:35
【问题描述】:

var t = "\some\route\here"

我需要它的“\some\route”。

谢谢。

【问题讨论】:

标签: javascript node.js regex typescript node-modules


【解决方案1】:

你需要lastIndexOfsubstr...

var t = "\\some\\route\\here";
t = t.substr(0, t.lastIndexOf("\\"));
alert(t);

此外,您需要将字符串中的 \ 字符加倍,因为它们用于转义特殊字符。

更新 由于这经常被证明对其他人有用,因此这里有一个 sn-p 示例...

// the original string
var t = "\\some\\route\\here";

// remove everything after the last backslash
var afterWith = t.substr(0, t.lastIndexOf("\\") + 1);

// remove everything after & including the last backslash
var afterWithout = t.substr(0, t.lastIndexOf("\\"));

// show the results
console.log("before            : " + t);
console.log("after (with \\)    : " + afterWith);
console.log("after (without \\) : " + afterWithout);

【讨论】:

  • 谢谢你。我如何加倍。我试过这个 t.replace("\\","\\\\") 它没有用
  • 您只需要在代码中直接设置字符串值时执行此操作,如上例所示。如果您是从其他地方(例如 URL)获取的,请不要担心 :)
  • 你从哪里得到字符串值?
  • 它正在工作,实际上我正在从 Web 服务获取目录路径。此代码用于后退按钮。非常感谢。
  • @Martijn 我完全理解。从每个字符都意味着特定的东西的背景来到 Javascript,选择双引号或单引号来包装字符串就足以让我头疼。然后他们添加了带有 different 字符串分隔符的字符串插值!!!你不能一直取悦所有人......:D
【解决方案2】:

正如@Archer 的回答中所述,您需要在反斜杠上加倍。我建议使用正则表达式替换来获取您想要的字符串:

var t = "\\some\\route\\here";
t = t.replace(/\\[^\\]+$/,"");
alert(t);

【讨论】:

  • 谢谢,仍然找不到如何将反斜杠加倍
  • 您需要在字符串本身中执行此操作。在 JavaScript 中,“\”是转义字符,因此“\k”(例如)被解析为“k”。
  • 在字符串中的反斜杠前使用@。示例而不是使用 "C:\\Mypath\\MyFile" 使用 @"C:\MyPath\MyFile" 只需确保将 @ 符号放在开头引号之前。恕我直言,使用 @"\" 而不是 "\\" 使代码更易于阅读
【解决方案3】:

使用 JavaScript,您可以简单地实现这一点。删除最后一次“_”出现后的所有内容。

var newResult = t.substring(0, t.lastIndexOf("_") );

【讨论】:

  • isuru,这不是已经被现有答案很好地涵盖了吗?
  • @KyleMit 你看不出来吗?他更新了他之前的答案。
  • 要添加更多信息,但即使是Jan 22nd, 2013 的版本也包含t = t.substr(0, t.lastIndexOf("\\"));,这与您的答案相同
猜你喜欢
  • 2018-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-19
相关资源
最近更新 更多