2015-01-08 5 views
0

Я пытаюсь ответить на этот вопрос:Проблемы с Javascript легко coderbyte вызов

Использование языка JavaScript, имеют функцию SimpleSymbols (ул) принимает параметр ул передается и определить, является ли приемлемым последовательность либо возвращает строку true или false. Параметр str будет состоять из символов + и = с несколькими буквами между ними (например, ++ d + === + C++ == a), и для строки, которая должна быть истинна, каждая буква должна быть окружена символом +. Таким образом, строка слева будет ложной. Строка не будет пустой и будет иметь хотя бы одну букву.

Вот мое решение:

function SimpleSymbols(str) { 
var test; 

    for (var i =0; i<str.length; i++){ 

    if ((str.charAt(i)!== '+' && str.charAt(i+1) === str.match(/[a-z]/)) 
    ||(str.charAt(i+1) === str.match(/[a-z]/) && str.charAt(i+2) !== '+')){ 
    test = false; 
    break; 
    } 

    else if (str.charAt(0) === str.match(/[a-z]/)){ 
     test = false; 
     break;} 

    else { 
     test= true;} 


    } 
    return test; 

}; 

ответ

1

Я думаю, вы можете просто использовать два регулярные выражения, а затем сравните длину массивов, возвращаемых ими

function SimpleSymbols(str){ 
    return str.match(/[a-z]/g).length == str.match(/\+[a-z]\+/g).length; 
} 

Первого регулярное выражение /[a-z]/g будет соответствовать всем письмам и /\+[a-z]\+/g будет соответствовать всем буквам, за которыми следует и предшествует буква +.

Затем мы используем свойство Array.length для проверки того, являются ли длины одинаковыми или нет, а затем возвращают результат Boolean. Так просто.