2015-09-25 184 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 - 修正。 –