问题描述
|
假设我在文件子系统information.txt中存储了以下信息
#{
\"buildnames\": {
label: \"buildnames\",data: [\"test2-a1\",\"test2-a2\",\"test2-a3\",\"test2-a4\",\"test2-a1\",\"test2-a4/\"
]
}};
#{
subsystem: \"CAS\",date: {
label: \"CAS\",data: [null]
},time: {
label: \"CAS\",modules: {
label: \"CAS\",cases: {
label: \"CAS\",Failed: {
label: \"CAS\",data: [[0,239],[1,249],[2,237],[3,192],[4,234],[5,288],[6,[7,195],[8,245],[9,181],[10,294],[11,[12,[13,235],[14,262],[15,155],[16,[17,121],[18,372],[19,[20,255],[21,231],[22,332],[23,[24,225],[25,271],[26,272],[27,[28,[29,131],[30,[31,165],[32,[33,201],[34,132],[35,[36,[37,211],[38,232],[39,[40,[41,[42,[43,[44,[45,261],[46,252],[47,[48,[49,161],[50,172],[51,[52,[53,241],[54,212],[55,[56,[57,[58,[59,[60,[61,[62,[63,[64,[65,[66,[67,[68,[69,[70,[71,[72,[73,[74,[75,[76,[77,[78,[79,145],[80,[81,[82,[83,[84,[85,[86,[87,[88,[89,171],[90,[91,[92,[93,[94,[95,135],[96,[97,[98,302],[99,[100,[101,214],[102,[103,[104,[105,[106,[107,[108,205],[109,311],[110,[111,[112,[113,[114,242],[115,[116,[117,[118,[119,[120,[121,[122,223],[123,[124,[125,[126,312],[127,135]
]
},cover: {
label: \"CAS\",301],135]
]
}};
并在以下脚本中读取信息。
var xmlhttp;
function loadXMLDoc(url,cfunc){
if (window.XMLHttpRequest)
{// code for IE7+,Firefox,Chrome,Opera,Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6,IE5
xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\");
}
xmlhttp.onreadystatechange=cfunc;
xmlhttp.open(\"GET\",url,true);
xmlhttp.send();
}
function myFunction(){
loadXMLDoc(\"subsysteminformation.txt\",handleXML);
}
var checkState = function(xmlhttp,callback) {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
callback();
} else {
// Check back again 1 sec later
setTimeout(checkState,1000);
}
};
function handleXML()
{
checkState(xmlhttp,function() {
var txt=xmlhttp.responseText;
var datasets = [];
var datasetsCounter =0;
var secondPos;
var aPosition;
var currentCharacterLocation;
while(txt.indexOf(\"#\") > -1){
aPosition = txt.indexOf(\"#\");
secondPos = txt.indexOf(\"#\",(aPosition)+1);
aPosition++;
datasets[datasetsCounter]=txt.substring(aPosition,secondPos);
//var stringToCompare = txt.substring(aPosition,secondPos);
txt = txt.substring(secondPos);
datasetsCounter++;
document.write(\"done\");
}
});
}
</script>
</head>
<body onLoad=\"myFunction()\">
</body>
</html>
现在我的问题
这部分是完全错误的
while(txt.indexOf(\“#\”)> -1){
aPosition = txt.indexOf(\“#\”);
secondPos = txt.indexOf(\“#\”,(aPosition)+1);
aPosition ++;
数据集[datasetsCounter] = txt.substring(aPosition,secondPos);
// var stringToCompare = txt.substring(aPosition,secondPos);
txt = txt.substring(secondPos);
datasetsCounter ++;
document.write(\“ done \”);
}
我想做的是检查文本文件中是否还有\“#\”字符,如果是,则读取之后的所有内容(直到下一个\“#\”字符,或者直到不再有任何字符为止)文档)放入数组数据集[i],但我从未超越过第一个#,也许你们中的一些聪明人可以帮助我解决我做错了的事情,我应该写些什么而不是\“ if( txt.indexOf(\“#\”)\“检查子系统信息.txt文件中是否还有\”#\“字符?
另外,如果文本中没有更多的“#”字符,我该如何阅读最后一部分信息?
在此先感谢=)
如果求解速度很快,则我不愿意加号,因为我在文件子系统information.txt =中将包含大约100个“#”字符
编辑2问题是我从来没有走过\“ While \”循环,它一直不断,我只希望一旦使用了一个\“#\”字符,就转到接下来,不要再次使用相同的\“#\”字符。 =)
解决方法
你可以有这样的东西
var数据集= xmlhttp.responseText.match(/^#(.[^;]*)/ gm).map(function(item){return eval(\“(\” + item.replace(/ ^#/,\ '\')+ \“)\”)})
则数据集将是文本文件中评估对象的数组