【问题标题】:Javascript separate string into different variablesJavascript将字符串分成不同的变量
【发布时间】:2014-11-27 12:42:40
【问题描述】:

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


例如,John M Peters 将产生变量 fname: Johnmname: Mlname: Peters

【问题讨论】:

  • 所有名字都总是有中间名吗?
  • 不,他们没有。在拆分之前我正在检查是否有中间首字母。

标签: javascript string


【解决方案1】:

.split() 只返回一个数组,因此您可以使用它轻松分配新变量...

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

【讨论】:

  • 啊,我好期待未来,什么时候能做到let [fname, mname, lname] = str.split(" ");
  • 我认为你至少可以在咖啡脚本中做这样的事情:[fname, mname, lname] = "John M Peters".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/

【讨论】:

    【解决方案3】:

    如果你不知道字符串中有多少个空格,你可以事先做如下:

    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]);}
    

    【讨论】:

      【解决方案4】:

      我会按照这些思路创建一个函数。这只是一个快速而肮脏的方法,不做任何验证,我把它留给你。

      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"
      

      【讨论】:

        【解决方案5】:

        除了其他人指出的答案,我想指出 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 等编写插件,那么可以使用许多有趣的语言扩展。

        【讨论】:

        • 正确,因此我对可移植性提出警告;p。但是 OP 没有说明这个 JS 代码的用途。对于一个插件或类似的它是完全合适的。
        猜你喜欢
        • 2013-08-02
        • 2017-08-11
        • 1970-01-01
        • 2020-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-26
        • 1970-01-01
        相关资源
        最近更新 更多