2015-09-25 182 views
1

我正在創建一個簡單的程序,提示用戶輸入帶有擴展名的文件名,我的程序將分隔文件名和根名稱。從本質上講,我的目標看起來像下面這樣:使用javascript分割名稱和根名稱

userinput=Jack.html 
filename=Jack 
rootname=html 

我能夠使用分割功能和訪問單獨分開,但我的問題是,當用戶輸入了這樣

userinput= Jack.1.2.html 
filename=Jack.1.2 
rootname=html 
例如多期

如何在用戶輸入具有多個句點時分離用戶輸入。 這是我的代碼。我想爲多個週期的工作以及:

var userinput, splitinput; 
var rootname, filename; 

userinput= prompt('Enter filename:') // 
splitinput=userinput.split('.') 
filename= splitinput[0] 
rootname=splitinput[1]+ userinput[2] 
console.log(filename) 
console.log(rootname) 
+0

'ROOTNAME = splitinput.pop()',和一切接合是一個文件名?雖然「rootname」是一個擴展名,而不是根名... – Teemu

+0

''Jack.1.2.html'.split('。')。slice(0,-1).join('。')'會給' Jack.1.2' –

回答

1

爲此,可以使用pop()join()完成。實際上,我們按照句點分割字符串,然後彈出最後一個字符串,然後獲取字符串的兩個部分(rootname和filename)。

這裏是一個現場演示

var userinput = prompt('Enter filename:'); 
 
var splitinput = userinput.split('.'); 
 
var rootname = splitinput.pop(); 
 
var filename = splitinput.join("."); 
 

 
document.getElementById("output1").textContent = filename; 
 
document.getElementById("output2").textContent = rootname;
<div>Filename: <span id="output1"></span></div> 
 
<div>Rootname: <span id="output2"></span></div>

+0

OP確實聲明瞭每個變量,注意前兩行。 – bonesbrigade

+1

@bonesbrigade哎呀,你說得對。只是很不習慣看到這種方式。回答編輯。 –

1

拆分它由上期的位置,就像這樣:

var userinput; 
 
    var rootname, filename; 
 
    
 
    userinput= prompt('Enter filename:') // 
 
    filename= userinput.substring(0,userinput.lastIndexOf('.')) 
 
    rootname=userinput.substring(userinput.lastIndexOf('.')+1) 
 
    console.log(filename) 
 
    console.log(rootname)

1

使用Array.slice()帶負參數修剪陣列的最後部分關閉(例如,html),然後重新加入:

var userinput = prompt('Enter filename:'), 
    filename = userinput.split('.').slice(0, -1).join('.') || userinput; 

alert('Filename: ' + filename); 

http://jsfiddle.net/u3nb2ctL/

+2

是的,輸入錯誤(請參閱上面的註釋)。等一下。 –

+0

@chriskelly - 修正。 –