这是我正在阅读的文件内容...
aaa 3333,bbb 5,ccc 10
我没有为keyvalue [2],[3],[4]和[5]定义。为什么会这样?
我实际上是先拆分,然后再根据空间进行拆分。
答案 0 :(得分:6)
因为你先用逗号分割,所以item现在是'PrimeSuiteId 3333'。当您按空格拆分时,您只得到两个项目,因此第三个值(keyvalue [2])及以上是空的。
编辑:可能修复以使脚本的第二部分工作
交换
var items = contents.toString().split(',');
与
var items = contents.toString().replace(/,/,' ');
将简单地用原始字符串中的空格替换逗号,以便您的预期值数组匹配
另一个编辑:因为用逗号或空格分割更好(如在评论中)
var contents = f.read();
Ti.API.info(contents);
var items = contents.toString(); // changed to return complete string not split
// removed for loop altogether
var keyvalue = items.split(/,|\s/); // changed to split by comma or space
var AppointmentSearchDaysAfter = keyvalue[0];
var AppointmentSearchDaysAfterValue = keyvalue[1];
var AppointmentSearchDaysBefore = keyvalue[2];
var AppointmentSearchDaysBeforeValue = keyvalue[3];
var PrimeSuiteId = keyvalue[4];
var PrimeSuiteIdValue = keyvalue[5];
答案 1 :(得分:1)
从内容文件中的内容,您应该只能获取
的值var AppointmentSearchDaysAfter = keyvalue[0];
var AppointmentSearchDaysAfterValue = keyvalue[1];
逗号之间的每个数据条目只有一个空格
答案 2 :(得分:1)
分割功能正在正常,您希望它表现为异常。
按空格分割后,数组中只会得到两个值。从哪里带来6个值!!!?
您将在下一次迭代中获得的其余值。
答案 3 :(得分:1)
不是为每个项目声明单个变量,然后从内容字符串中加载它们,而是可以将整个项目减少到具有键/值对的对象:
var items = contents.split(',').reduce(function (acc, val) {
var split = val.split(' ');
return acc[split[0]] = split[1], acc;
}, {});
要测试值是什么,请尝试:
console.log(items.PrimeSuiteId); // outputs 3333
console.log(items.AppointmentSearchDaysBefore); // outputs 5
console.log(items.AppointmentSearchDaysAfter); // outputs 10