我有一个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 & Functional
,iPhone 6
,iOS
,9
,并将其中的每一个分配给不同的var,最后打印?这里有9个操作系统版本。
想法是最终在JS中打印为:
Type: UI & Functional regression
Phone: iPhone 6
OS: iOS
OS version: 9
与其他上述字符串类似。
我尝试或想到的内容:
1。使用JS split()函数
2。是否可以将var字符串内容放在一个数组中然后split()?
答案 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中。