2010-06-06 3 views
3

Этот код обрезает пробелы, (FYI: он кредитуется очень быстро)Как я правильно добавить скобки к этому коду

function wSpaceTrim(s){ 
    var start = -1, 
    end = s.length; 
    while (s.charCodeAt(--end) < 33); //here 
    while (s.charCodeAt(++start) < 33); //here also 
    return s.slice(start, end + 1); 
} 

, а петли не имеют кронштейны, как бы я правильно добавить скобки к этому коду?

while(iMean){ 
    // like this; 
} 

Большое вам спасибо!

ответ

7

Тела петли пустые (фактическая вещь, что происходит, является операция инкремента/декремента в состоянии цикла), так просто добавьте {}:

while (s.charCodeAt(--end) < 33){} 
while (s.charCodeAt(++start) < 33){} 

Более длинный, и, вероятно, легче читать версию из такой же цикл while будет:

end = end - 1; 
while (s.charCodeAt(end) < 33) 
{ 
    end = end - 1; 
} 
start = start + 1; 
while (s.charCodeAt(start) < 33) 
{ 
    start = start + 1; 
} 
+0

если они пусты они делают что-нибудь? – Mohammad

+0

О, они меняют переменные 'end' и' start', не так ли? – Mohammad

+1

Возможно, добавьте комментарий: {/ * объяснение того, что вы делаете, не повредит * /} – Oblio

2

Код не требует скобок, но ему нужен вариант использования собственного метода обрезки.

Opera, Firefox и Chrome имеют встроенную функцию обрезки прототипа строки - , другие браузеры также могут добавить ее. Для этого конкретного метода, я думаю, я немного поработаю с String.prototype, , чтобы использовать встроенный метод, где это возможно.

if(!String.prototype.trim){ 
    String.prototype.trim= function(){ 
     var start= -1, 
     end= this.length; 
     while(this.charCodeAt(--end)< 33); 
     while(this.charCodeAt(++start)< 33); 
     return this.slice(start, end + 1); 
    } 
} 

Это действительно может быть быстрым, но я предпочитаю просто-

if(!(''.trim)){ 
    String.prototype.trim= function(){ 
     return this.replace(/^\s+|\s+$/g,''); 
    } 
} 
+0

Я бы ожидал, что это будет довольно быстро на самом деле, поскольку функция replace реализована на C или C++ (независимо от того, что написано в браузере). Это немного медленнее, потому что он использует регулярные выражения, но скомпилированный в собственный код, вероятно, более чем компенсирует это. – intuited

Смежные вопросы