JavaScript和CSS-内容替换/解析

JavaScript和CSS-内容替换/解析,javascript,css,regex,parsing,Javascript,Css,Regex,Parsing,我有一个包含CSS代码的JavaScript字符串 有了这个字符串,我想得到两个东西,一个是循环,另一个是不带正则表达式 第一件事:选择器/s 第二件事:获得的选择器的属性 我的想法: var myResult = [], myString = /* CSS content */; while(myString.length > 0) { var mySelector = /* Obtain the first selector occurrence. */, m

我有一个包含CSS代码的JavaScript字符串

有了这个字符串,我想得到两个东西,一个是循环,另一个是不带正则表达式

第一件事:选择器/s

第二件事:获得的选择器的属性

我的想法:

var myResult = [], myString = /* CSS content */;

while(myString.length > 0)
{
    var
    mySelector = /* Obtain the first selector occurrence. */,
    myRules = /* Obtain the rules of the founded selector */;

    myResult.push(mySelector, myRules);

    myString = myString.replace(mySelector, null);
    myString = myString.replace(myRules, null);

    // then now loop and find the next first selector and his rules.
}
例如:

var myResult = [], myString = "main { color: #405050; margin: 0; } hr, progress { width: 100%; }";

while(myString.length > 0)
{
    var
    mySelector = /* Obtain the first selector occurrence */,
    myRules = /* Obtain the rules of the founded selector */;

    myResult.push(mySelector, myRules);

    myString = myString.replace(mySelector, null);
    myString = myString.replace(myRules, null);

    // then now loop and find the next first selector and his rules.
}

// now myResult must contain: "main", "color: red; margin: 0;", "hr, progress", "width: 100%"
有人可以帮我做这个算法而不使用regex?

这对你来说很有用

var myString = "main { color: #405050; margin: 0; }";
            var selector = "";            
            var myResult = [];
            for (var i = 0; i < myString.Length; i++)
            {
                if ((myString[i] >= 65 && myString[i] <= 90) || (myString[i] >= 97 && myString[i] <= 122) || myString[i] == '.' || myString[i] == '#') 
                /* keep going if you find any thing that is . or # of alphabets */
                {
                    selector += myString[i];
                }
                else
                {

                    for (var j = i + 1; j < myString.Length; j++)
                    {
                        if ((myString[j] >= 65 && myString[j] <= 90) || (myString[j] >= 97 && myString[j] <= 122)) // rule start
                        /* keep going unless the rule ends */
                        {
                            var currRule = "";
                            for (var l = j; l < myString.Length; l++)
                            {
                                currRule += myString[l];
                                if (myString[l] == ';')
                                {
                                    j = l;
                                    i = l;
                                    break;
                                }

                            }
                            myResult.push(mySelector, myRules);
                        }
                    }
                }
            }
var myString=“main{color:#405050;边距:0;}”;
var选择器=”;
var myResult=[];
for(var i=0;i如果((myString[i]>=65&&myString[i]=97&&myString[i]=65&&myString[j]=97&&myString[j]您能提供变量的可能值吗?以及您为什么不想使用regex的解释?(当然,这不是一个完整的解决方案,但它可能是解决方案的一部分;任意排除它需要解释。)@MuneebZulfiqar我问了这个问题..这是在浏览器环境中吗?(这对答案很重要。)@VasileAlexandruPeste:不,Muneeb的意思是:显示你的输入字符串,以及输入字符串的预期值。