2013-06-21 53 views
1

我需要從表單中的輸入字段獲取一個值,我只需要文件名。該字符串看起來像這樣:拆分一個文件輸入字段的字符串

var str = 'C:\Users\User\Desktop\file_name.ext'; 

如果我嘗試運行(是的,反斜槓轉義)

str.split(\\)[str.length-1] 

它不工作,因爲字符串中的斜線不會被轉義。簡單​​給我C:UsersUserDesktopile_name.ext,你會發現問題在哪裏。我如何解決這個問題?

+0

後一些(更多)的代碼,也許? –

+0

在我看來,你拼錯了'split'參數 –

+0

你的意思是你只想在你的輸出中輸入「file_name」 –

回答

0

你需要躲避反斜槓在你的字符串:

"C:\\Users\\User\\Desktop\\file_name.ext".split("\\").pop(); 
0
var str = 'C:\\Users\\User\\Desktop\\file_name.ext'; 

var parts = str.split('\\'); 
var result = parts[parts.length - 1]; 
2
'C:\Users\User\Desktop\file_name.ext'.split(/\\|//).pop(); 

假定反斜線轉義。我通過擺脫反斜槓來混淆人們。上面的字符串是「原樣」。

+0

如果只有我可以讓我的字符串在第一個位置出現斜槓。我的字符串是'C:\ Users \ User \ Desktop \ file_name.ext'' – Rastur

+0

你是什麼意思?如果你編碼一個字符串,你必須避開斜槓。將字符串輸出到控制檯時,您將看不到轉義斜線。您的問題中的字符串與代碼中呈現的方式無效。 –

+0

感嘆......我的字符串是從文件輸入字段的.val()開始的。檢查我發佈的解決方案。 – Rastur

0

的解決方案,並鏈接到撥弄fiddle

$(function() { 
function getFileName(path) { 
    return path.match(/[-_\w]+[.][\w]+$/i)[0]; 
} 

$('#data_up').change(function() { 
    var fileName = $(this).val(); 
    $('#data').val('somepath/' + getFileName(fileName)); 
}); 
});