我编写了以下代码来获取没有扩展名和路径的文件名。我在浏览器中运行它。
<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的新手可以告诉我什么是问题?如何解决?
答案 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]