2012-02-23 68 views
0

我正在寻找一个字符串,并找到其中的所有空格,并将其分隔为不同的变量。我知道我可以使用.split()但不会产生新的变量。我宁愿不使用jQuery或其他JavaScript库,但如果必须的话,它不会是最糟糕的事情。谢谢!Javascript将字符串分成不同的变量


实施例,John M Peters将导致变量fname: Johnmname: Mlname: Peters

+0

是否所有的名字总是有一个中间名? – Paul 2012-02-23 03:45:32

+0

不,他们没有。我正在做一个检查,然后再对其进行分割,看看是否有中间的首字母。 – 2012-02-23 03:46:28

回答

4

.split()只是返回一个数组,这样你就可以使用,可以轻松地分配新的变量...

var str = "John M Peters"; 
var fname = str.split(" ")[0]; 
var mname = str.split(" ")[1]; 
var lname = str.split(" ")[2]; 
+0

好的,谢谢,看起来好像会很完美 – 2012-02-23 03:34:32

+2

啊,我很期待未来,当我们能够做'let [fname,mname,lname] = str.split(“”);' – Domenic 2012-02-23 03:35:45

+0

I认为你至少可以在coffee-script中做这样的事情:'[fname,mname,lname] =“John M Peters”.split('')' – mportiz08 2012-02-23 03:41:14

2

可以分割字符串,像这样:

var name = 'John M Peters'; 
var arr = name.split(' '); 

var obj = {fname: arr[0]}; 
if(arr.length === 1) { 
    obj.lname = arr[1]; 
} else { 
    obj.mname = arr[1]; 
    obj.lname = arr[2]; 
} 

console.log(obj.fname); 
console.log(obj.mname); //could be undefined 
console.log(obj.lname); 

该解决方案还将用于工作也没有中间首字母的字符串。你可以在这里看到这个例子:http://jsfiddle.net/nDwmY/2/

0

我会沿着这些线创建一个函数。这只是一个快速和肮脏,并没有做任何验证,我把它留给你。

function parse_name(theName) { 
    var nameSplit = theName.split(" "); 

    var nameFields = { 
      first : nameSplit[0], 
      middle : nameSplit[1], 
      last : nameSplit[2] 
     }; 

    return nameFields; 
} 

然后你可以随时调用它来解析一个名字。

var parsedName = parse_name("John M Smith"); 

alert(parsedName.first); // Should alert "John" 
alert(parsedName.middle); // Should alert "M" 
alert(parsedName.last); // Should alert "Smith" 
0

除了答案的人指出的那样,我想指出的是,Mozilla的JavaScript引擎(SpiderMonkey的)支持拆解作业:

<script language="javascript1.7"> 
    var s = 'John M. Peters'; 
    var fname, mname, lname; 

    [fname, mname, lname] = s.split(/\s+/); 
    alert('fname = ' + fname + ', mname = ' + mname + ', lname = ' + lname); 
</script> 

这是便携,所以不适合网页编程。但是,如果您正在编写firefox或thunderbird等插件,则可以使用许多有趣的语言扩展。

+0

这不是一个跨浏览器兼容的系统,对吗? – 2012-02-23 03:45:48

+1

正确,因此我关于可移植性的警告; p。但OP没有指定这个JS代码的目的。对于一个插件或者它是完全合适的。 – FatalError 2012-02-23 03:46:54

0

如果你不知道有多少空间有字符串中,事前,你可以做到以下几点:

var str = "How are you doing today, my dear friend?"; 
numberspaces = str.split(" ").length; //you know how many spaces there are 
words=str.split(" ");     //it creates an array of words 
var i; 
for (i = 0; i < numberspaces; i++){ 
console.log(words[i]);} 
相关问题