2013-04-22 230 views
13

我有文件路径的字符串。我想用双反斜杠(“\\”)替换所有单反斜杠(“\”)。用双反斜杠“\”替换单个反斜杠“\”

var replaceableString = "c:\asd\flkj\klsd\ffjkl"; 
    var part = /@"\\"/g; 
    var filePath = replaceableString .replace(part, /@"\\"/); 
    console.log(filePath); 

控制台向我展示了它。

c:asdlkjklsdfjkl 

我发现了这样的事情,不幸的是它没有工作。 Replacing \ with \\

+1

那里的“@”在做什么? – Jon 2013-04-22 09:52:25

+5

你的字符串不包含\ – 2013-04-22 09:53:53

+0

请看看那里的JavaScript正则表达式样本的巨大财富。这不是多次解决的唯一问题。很难相信写一个问题比寻找自己的时间少,甚至一次*。 – Tomalak 2013-04-22 09:56:23

回答

7
var replaceableString = "c:\asd\flkj\klsd\ffjkl"; 
alert(replaceableString); 

这将提醒您c:asdlkjklsdfjkl因为“\”是不被视为转义字符。

为了有一个反斜杠在字符串中,你应该做这样的事情..

var replaceableString = "c:\\asd\\flkj\\klsd\\ffjkl"; 
alert(replaceableString); 

如果你想这会提醒你c:\asd\flkj\klsd\ffjkl

JS Fiddle

Learn about Escape sequences here

您字符串默认具有'\',则应该将其转义。使用escape()函数

var replaceableString = escape("c:\asd\flkj\klsd\ffjkl"); 
alert(replaceableString); 

JS Fiddle

6

尝试:

var parts = replaceableString.split('\\'); 
    var output = parts.join('\\\\'); 

就个人而言,我不是那么到Reg EXPS专家,我倾向于用非字母数字字符打交道时,既由于可读性,以避免他们,避免怪异的错误。

4

\是一个转义字符。因此replaceableString不包含任何反斜杠。

为了解决这个问题,你应该申报的字符串是这样的:

var replaceableString = "c:\\asd\\flkj\\klsd\\ffjkl"; 
+0

用户在输入字段中输入路径本身的事实。实时处理管理线路,并替换所有“\”按键? – PilgrimViis 2013-04-22 10:04:37

+0

@ user2075057说清楚用户用'\'输入路径,所以你想让它保持在你的字符串中......?我的意思是不逃避...? – 2013-04-22 10:13:59

+0

@Prasath K我想使用我的java代码显示文件中的内容。 – PilgrimViis 2013-04-22 10:20:55

6

你在你的代码的几个问题。

  1. 要在您的字符串变量中获得\,您需要将其转义。

    当你创建一个像这样的字符串:replaceableString = "c:\asd\flkj\klsd\ffjkl";以前的\被视为转义序列。所以在创建字符串时,它会尝试解释转义序列\a,因为这是无效的,它会将a存储到字符串中。例如。 \n将被解释为换行符。

  2. 我假设@来自.net示例。 Javascript不知道“原始”字符串。

  3. 从您的正则表达式中删除引号。

这会做你想要什么:

var string = "c:\\asd\\flkj\\klsd\\ffjkl"; 
var regex = /\\/g; 
var FilePath = string.replace(regex, "\\\\"); 
0

如果你有过的字符串你正在努力寻找在反斜线内容无法控制,它包含单\值(例如变量。 myPath包含C:\Some\Folder\file.jpg),那么您实际上可以引用JavaScript中的单个反斜杠作为String.fromCharCode(92)

所以要在上面的文件路径示例中获取文件名。

var justTheName = myPath.split(String.fromCharCode(92)).pop(); 
0

如果字符串匹配,最好使用encodeURIComponent,decodeURIComponent。

match(encodeURIComponent(inputString)); 

function match(input) 
{ 

for(i=0; i<arr.length; i++) 
{ 
if(arr[i] == decodeURIComponent(input)) 
return true; 
else return false; 
} 
} 
0

在字符串中出现单个反斜杠的情况下,javascript替换方法不允许我替换单个反斜杠。

相反,我不得不使用它返回分割字符串数组的拆分方法,然后拼接没有反斜杠的字符串(或任何你想用来替换)

解决方案(替换反斜线有下划线) :

var splitText = stringWithBackslash.split('\\'); 
var updatedText = splitText[0] + '_' + splitText[1]; 
0

第一编码字符串

然后用替代%5C%中出现的所有5C%5C

最后解码字符串

var result = encodeURI(input); 
result=decodeURI(result.replace(/%5C/g,"%5C%5C")); 
相关问题