replacen van bepaalde tekens
Mark Hogeveen
21/06/2013 16:01:46Hallo ik heb de volgende code die onderscheid maakt tussen keywords, operators, en later nog meer zoals haakjes en aanhalingstekens.
Dit is wat ik nu heb, maar als je bijvoorbeeld een operator tegen een keyword aanzet, dan ziet hij ze niet. Terwijl het bij een operator niet uitmaakt of er een spatie voor of achter staat. Bij keywords maakt het juist weer wel uit, anders is het geen "word"
Dit zou bijvoorbeeld gewoon goed moeten zijn: abc++
Maar mijn script ziet dus niet de ++ als een operator, als ik dit zou doen abc ++ (met spatie ertussen)
Dan zou hij het wel zien als een operator.
Ik weet wel waar het door komt, ik doe de hele string in stukjes hakken. Maar ik weet geen andere manier. Weten jullie een oplossing?
Keywords moeten dus wel los van elkaar staan, operators hoeven niet los te staan van een variabele of iets dergelijks.
Dit is wat ik nu heb, maar als je bijvoorbeeld een operator tegen een keyword aanzet, dan ziet hij ze niet. Terwijl het bij een operator niet uitmaakt of er een spatie voor of achter staat. Bij keywords maakt het juist weer wel uit, anders is het geen "word"
Dit zou bijvoorbeeld gewoon goed moeten zijn: abc++
Maar mijn script ziet dus niet de ++ als een operator, als ik dit zou doen abc ++ (met spatie ertussen)
Dan zou hij het wel zien als een operator.
Ik weet wel waar het door komt, ik doe de hele string in stukjes hakken. Maar ik weet geen andere manier. Weten jullie een oplossing?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
var operators = ["<", "+", "-", ">"],
keywords = ["class", "ab"];
function highlight(str) {
return str.replace(/[^ ]+/g, function(m) {
if (operators.indexOf(m) > -1)
return '<span class="operators">' + m + '</span>';
else if (keywords.indexOf(m) > -1)
return '<span class="keywords">' + m + '</span>';
return m;
});
}
document.body.innerHTML = highlight("< + class abc > -"); // Test
keywords = ["class", "ab"];
function highlight(str) {
return str.replace(/[^ ]+/g, function(m) {
if (operators.indexOf(m) > -1)
return '<span class="operators">' + m + '</span>';
else if (keywords.indexOf(m) > -1)
return '<span class="keywords">' + m + '</span>';
return m;
});
}
document.body.innerHTML = highlight("< + class abc > -"); // Test
Keywords moeten dus wel los van elkaar staan, operators hoeven niet los te staan van een variabele of iets dergelijks.
Gewijzigd op 21/06/2013 16:04:34 door Mark Hogeveen
Er zijn nog geen reacties op dit bericht.