拆分JavaScript变量的字符串内容并分配给单独的JS变量

时间:2016-06-10 09:18:49

标签: javascript arrays string split

我有一个JS var,它包含的字符串的内容类似于Automated - UI & Functional Regression on iPhone 6 running iOS 9。同样,我有其他字符串值:


Automated - Under the Hood: iPhone 6 running iOS 9  

Automated - AU/NZ:  iPhone 6 running iOS 9

Automated - DRM: iPhone 6 running iOS 9 

Automated - Ads regression: iPhone6 running iOS 9

Automated - Ads regression: iPhone 5 running iOS 8 

Automated - UI & Functional Regression on iPad 2 running iOS 8

Automated - Under the Hood: iPad Air on iOS 8

Automated - AU/NZ: iPad Air running iOS 8

Automated - DRM iPadAir running iOS 8


这是JS var:

var dump = test.name //test.name = "Automated - UI & Functional........"

如何获取此转储变量中的特定内容,例如UI & FunctionaliPhone 6iOS9,并将其中的每一个分配给不同的var,最后打印?这里有9个操作系统版本。

想法是最终在JS中打印为:

Type: UI & Functional regression
Phone: iPhone 6
OS: iOS 
OS version: 9

与其他上述字符串类似。

我尝试或想到的内容:

1。使用JS split()函数

2。是否可以将var字符串内容放在一个数组中然后split()?

4 个答案:

答案 0 :(得分:1)

你可以这样做:

    var arystrFields = test.split("-")
       ,strAfterAutomated = arystrFields[1].trim();

您需要更严格的字符串格式才能进一步提取内容,使用分隔符,例如:分割其他字段,然后您可以执行此操作以分割剩余字段:

    var arystrRemaining = arystrFields[1].split(":");

答案 1 :(得分:1)

您可以使用正则表达式来实现它。看看这个羽毛球:https://plnkr.co/edit/Thk5j4ZqxSklTKTubQ40?p=preview

有两个简单的正则表达式:

var test = 'Automated - Under the Hood: iPhone 6 running iOS 9 \n\r' +
           'Automated - AU/NZ:  iPhone 6 running iOS 9\n\r' +
           'Automated - DRM: iPhone 6 running iOS 9\n\r' +
           'Automated - Ads regression: iPhone6 running iOS 9\n\r' +
           'Automated - Ads regression: iPhone 5 running iOS 8\n\r' +
           'Automated - UI & Functional Regression on iPad 2 running iOS 8\n\r' +
           'Automated - Under the Hood: iPad Air on iOS 8\n\r' +
           'Automated - UI & Functional Regression on iPad 2 running iOS 9\n\r' +
           'Automated - AU/NZ: iPad Air running iOS 8\n\r' +
           'Automated - DRM iPadAir running iOS 8\n\r';

var reg = /Automated - UI & Functional Regression on(.*)/;

var lines = test.split('\n\r')

console.log(lines);
var result = [];
for(var i = 0; i < lines.length; i++) {
  var regResult = reg.exec(lines[i]);
  if(regResult && regResult[1]) {
    console.log(lines[i], 'ok');
    result.push(regResult[1]);
  }
  else {
    console.log(lines[i], 'nok');
  }
}

console.log(result);

var regSecond = /(.*)running ([A-Za-z]*) ([0-9])/

var lstResult = []
for(var i = 0; i < result.length; i++) {
  var splitted = regSecond.exec(result[i]);
  console.log(splitted);
  lstResult.push({
    Phone: splitted[1].trim(),
    OS: splitted[2].trim(),
    'OS version': splitted[3].trim()
  })
}

的console.log(lstResult);

也许正则表达式必须更复杂才能获得所有案例

答案 2 :(得分:0)

您可以先在字符串上使用split:

var x = dump.split(":");

这将为您提供2个项目的数组,第1个将是类型。接下来,您可以获取数组的第二项并将其拆分为空格。然后,您可以组合您获得的新数组来创建新项目。例如:

var phone = secondArray[0] + secondArray[1]; var os = secondArray[3];

依旧......

答案 3 :(得分:0)

您可以使用test.split(' ');&amp;分拆文字。将结果存储在数组中。这样你就可以将所有东西分开了。存储在自己的var中。