我是新來的編碼,目前我正在研究NodeJs文件系統模塊。如何找到數據中匹配大括號的位置?
我正在處理一個包含大量數據和存儲爲字符串的數據的文件。
我的問題是,我無法找到匹配的大括號和'}'的位置。
{ // I know the index of '{'
{
{
}
{
}
}
{
{
}
}
} // have to find position here.
我是新來的編碼,目前我正在研究NodeJs文件系統模塊。如何找到數據中匹配大括號的位置?
我正在處理一個包含大量數據和存儲爲字符串的數據的文件。
我的問題是,我無法找到匹配的大括號和'}'的位置。
{ // I know the index of '{'
{
{
}
{
}
}
{
{
}
}
} // have to find position here.
假設你想要一個程序來做到這一點!
只需逐個比較,直到找到匹配大括號。代碼可能會與此類似(未測試) -
var string = "{{{}}}";
var leftCurlyBraceIndex = 0, // index of the '{' to which you need to find the matching '}'
rightCurlyBracesTobeIgnored = 0,
rightCurlyBraceIndex = -1;
for (var i = leftCurlyBraceIndex + 1, l = string.length; i < l; i++) {
if (string[i] == "}") {
if (rightCurlyBracesTobeIgnored == 0) {
rightCurlyBraceIndex = i; break;
} else {
rightCurlyBracesTobeIgnored -= 1;
}
} else if (string[i] == "{"){
rightCurlyBracesTobeIgnored += 1;
}
}
alert(rightCurlyBraceIndex)
var str = '{{{}{}}{{}}}', matchBrace;
matchBrace = function(str, i) {
var index = 0, leftBraces = [], len;
if(str.charAt(i) === '}') {
return -1;
}
for(index = i, len = str.length; index < len; ++index) {
if(str.charAt(index) === '{') {
leftBraces.push('{');
}
if(str.charAt(index) === '}') {
if(leftBraces.length === 1) {
return index;
}
leftBraces.pop()
}
}
};
如果你在的NodeJS:是否有可能爲你只是把它解釋爲JSON? – fboes 2014-09-25 10:10:30
您使用的是什麼IDE? – IshaS 2014-09-25 10:10:34
我只用記事本++。我主要使用JavaScript並使用nodeJs作爲服務器部分。 – kumark 2014-09-25 10:12:47