我正在寻找一个字符串,并找到其中的所有空格,并将其分隔为不同的变量。我知道我可以使用.split()
但不会产生新的变量。我宁愿不使用jQuery或其他JavaScript库,但如果必须的话,它不会是最糟糕的事情。谢谢!Javascript将字符串分成不同的变量
实施例,John M Peters
将导致变量fname: John
,mname: M
和lname: Peters
。
我正在寻找一个字符串,并找到其中的所有空格,并将其分隔为不同的变量。我知道我可以使用.split()
但不会产生新的变量。我宁愿不使用jQuery或其他JavaScript库,但如果必须的话,它不会是最糟糕的事情。谢谢!Javascript将字符串分成不同的变量
实施例,John M Peters
将导致变量fname: John
,mname: M
和lname: Peters
。
.split()
只是返回一个数组,这样你就可以使用,可以轻松地分配新的变量...
var str = "John M Peters";
var fname = str.split(" ")[0];
var mname = str.split(" ")[1];
var lname = str.split(" ")[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/
我会沿着这些线创建一个函数。这只是一个快速和肮脏,并没有做任何验证,我把它留给你。
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"
除了答案的人指出的那样,我想指出的是,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等插件,则可以使用许多有趣的语言扩展。
这不是一个跨浏览器兼容的系统,对吗? – 2012-02-23 03:45:48
正确,因此我关于可移植性的警告; p。但OP没有指定这个JS代码的目的。对于一个插件或者它是完全合适的。 – FatalError 2012-02-23 03:46:54
如果你不知道有多少空间有字符串中,事前,你可以做到以下几点:
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]);}
是否所有的名字总是有一个中间名? – Paul 2012-02-23 03:45:32
不,他们没有。我正在做一个检查,然后再对其进行分割,看看是否有中间的首字母。 – 2012-02-23 03:46:28