JavaScript和CSS-内容替换/解析
我有一个包含CSS代码的JavaScript字符串 有了这个字符串,我想得到两个东西,一个是循环,另一个是不带正则表达式 第一件事:选择器/s 第二件事:获得的选择器的属性 我的想法: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
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的意思是:显示你的输入字符串,以及输入字符串的预期值。