使用javascript搜索'\'

时间:2009-10-27 10:14:21

标签: javascript

我编写了以下代码来获取没有扩展名和路径的文件名。我在浏览器中运行它。

<script type="text/javascript">
var str=new String("C:\Documents and Settings\prajakta\Desktop\substr.html");
document.write(str);
var beg=str.lastIndexOf("\");// **HERE IS THE PROBLEM IT DOESNT GIVE ME THE INDEX OF '\'**
 alert(beg);
var end=str.lastIndexOf (".");
 alert(end);
document.write("<br>"+str.slice(beg+1,end));
</script> 

但是如果我用另一个字符ex('p')替换'\',则相同的代码代码有效; 我正在为ex初始化var str,但在我的应用程序中它并不总是固定的。因为我是Javascript的新手可以告诉我什么是问题?如何解决?

8 个答案:

答案 0 :(得分:5)

你需要逃避反斜杠字符。使用以下内容:

var beg=str.lastIndexOf("\\");

编辑:是的,除非你在原始字符串中转义反斜杠,否则它将给出-1:)

使用此:

var str=new String("C:\\Documents and Settings\\prajakta\\Desktop\\substr.html");

反斜杠是Javascript转义字符 - 这意味着反斜杠后面的字符指的是特殊字符。因此,在原始字符串中,\ prajakta将被解释为'\ p'+'rajakta',其中'\ p'具有非常不同的含义。因此,您需要在每个字符串中使用“\\”。

答案 1 :(得分:4)

答案 2 :(得分:1)

"\"是转义字符,请尝试使用"\\"

无论如何,我会用正则表达式来做,因为我喜欢它们。)

var str=new String("C:\\Documents and Settings\\prajakta\\Desktop\\substr.html");
document.write(str);
document.write("<br>"+str.replace(/^.*\\/,"").replace(/\..*?$/,""));

哦,测试我看到你必须逃避测试字符串中的反斜杠!

答案 3 :(得分:0)

你需要在大多数语言中转义“\”,因为\是转义序列。 Javascript可能是一样的。

尝试搜索"\\"(没有空格)。另外,出于同样的原因将"C:\Docume..."替换为"C:\\Documents..."

答案 4 :(得分:0)

尝试

lastIndexOf("\\")

答案 5 :(得分:0)

反斜杠通常是转义字符,因此每当字符串出现时你都必须输入两次,即你的

var str=new String("C:\Documents and Settings\prajakta\Desktop\substr.html");

应该阅读

var str=new String("C:\\Documents and Settings\\prajakta\\Desktop\\substr.html");

问题是,\D由javascript引擎解释,并将被相应的特殊字符替换(在这种情况下,我不相信有特殊字符\D(或' p'或's'),所以它将被简单的D取代,你的字符串内容将是

"C:Documents and SettingsprajaktaDesktopsubstr.html"

继续,用简单的

进行检查
if (str == "C:Documents and SettingsprajaktaDesktopsubstr.html") alert("Doh! :)");

它应该给你提醒。

另外,你的

var beg=str.lastIndexOf("\");

应该阅读

var beg=str.lastIndexOf("\\");

HTH。

答案 6 :(得分:0)

在将字符串放入变量之前,您应该escape(String)

答案 7 :(得分:0)

除了已经说过的内容之外,“新字符串”在这里毫无意义

var str="C:\\Documents and Settings\\prajakta\\Desktop\\substr.html";

是的,regexps是要走的路

fileName = str.match(/([^\\.]+)\.\w+$/)[1]