2013-05-01 6 views
1

Я ищу способ разбора строки этой природы:Синтаксический Строка конкретного формата

r-g-b g 

или

g-g g g 

или

b g-g 

и т.д.

В принципе, буква определяет, какой цвет циркулирует le для отображения, а - определяет, существует ли связь между кругами.

Я как бы зациклился на том, как я мог бы разработать эффективный алгоритм для этого, используя JS/jQuery/HTML. Есть идеи?

+0

, что вы хотите сделать с разобранной значением –

+0

Один простой способ заключается в использовании [ .split()] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/split), как '' gg g g.split ('') 'даст массив например '[" g "," - "," g "," "," g "," "," g "]', которые могут быть обработаны –

ответ

1

Я не уверен, что вы пытаетесь достичь, но вот моя догадка:

var s = "r-g-b g"; 
var color = { 'r' : 'red', 'g' : 'green', 'b' : 'blue' }; 
s = s.split(''); //turn it into an array; 

for (i=0; i < s.length; i++) { 
    if (s[i]=='-') drawLink(); 
    else drawCircle(color[s[i]]); 
} 

function drawCirlce(color) { 
    //your code for this 
} 

function drawLink() { 
    //your code for this 
} 
0

Самый простой ответ, который я могу вспомнить, прочитать строку по одному символу за раз и делать в соответствии с инструкциями , Сложность заключается в том, что (я предполагаю), вы должны нарисовали следующий круг, прежде чем быть в состоянии сделать связь между ними:

var s = 'b-g r r b'; 
link = ''; 
for (var i = 0; i < s.length; i++) { 
    // `s.charAt(i)` gets the character 
    // you may want to do a some jQuery thing here if you have that 
    switch(s.charAt(i)) { 
    case 'b': 
     prev = drawCircle('b'); 
     if(link!='') { 
     drawLink(link,prev); 
     link = ''; 
     } 
     break; 
    case 'r': 
     prev = drawCircle('r'); 
     if(link!='') { 
     drawLink(link,prev); 
     link = ''; 
     } 
     break; 
    case '-': 
     link = prev; 
     break; 
    } 
} 
Смежные вопросы