2012-07-03 2 views
0

Я пытаюсь вырезать текст из Царапины сайта и не уверен, что функции или библиотеки, я могу использовать, чтобы сделать это проще:Использование JavaScript строковые операции, чтобы вырезать точный текст

пример кода я бегу от PhantomJS:

var latest_release = page.evaluate(function() { 
       // everything inside this function is executed inside our 
       // headless browser, not PhantomJS. 
       var links = $('[class="interesting"]'); 
       var releases = {}; 
       for (var i=0; i<links.length; i++) { 
        releases[links[i].innerHTML] = links[i].getAttribute("href"); 
       } 

       // its important to take note that page.evaluate needs 
       // to return simple object, meaning DOM elements won't work. 
       return JSON.stringify(releases); 
      }); 

Класс interesting имеет то, что мне нужно, в окружении новых линий и вкладок и этажерки.

здесь:

{"\n\t\t\t\n\t\t\t\tI_Am_Interesting\n\t\t\t\n\t\t":null,"\n\t\t\t\n\t\t\t\tI_Am_Interesting\n\t\t\t\n\t\t":null,"\n\t\t\t\n\t\t\t\tI_Am_Interesting\n\t\t\t\n\t\t":null} 

Я попытался string.slice("\n"); и ничего не произошло, я действительно хочу эффективный способ, чтобы иметь возможность вырезать строки, как это, исходя из его отношения к этим \n' х и \t ' s

Кстати это был мой раскол код:

var x = latest_release.split('\n'); 

Приветствия.

ответ

2
var interesting = { 
     "\n\t\t\t\n\t\t\t\tI_Am_Interesting1\n\t\t\t\n\t\t":null, 
     "\n\t\t\t\n\t\t\t\tI_Am_Interesting2\n\t\t\t\n\t\t":null, 
     "\n\t\t\t\n\t\t\t\tI_Am_Interesting3\n\t\t\t\n\t\t":null 
    } 

    found = new Array(); 
    for(x in interesting) { 
     found[found.length] = x.match(/\w+/g); 
    } 
    alert(found); 
+0

Это было прекрасно! Я собираюсь изучить «регулярные выражения» много сейчас, мне нужно точно понять, как «(/ \ w +/g)» может так сильно преобразовать текст. Довольно удивительно. Спасибо :) – Joseph

+2

Regex as is вернет массив слов, если в интересном тексте есть пробелы. Просто то, что нужно знать. –

1

Не могли бы вы попробовать с «\\ n» как шаблон? ваш \ п может быть понят как простой строки, а не специальный символ

+0

да, ваше право о причине не работал, \\ п работает как шарм. однако \\ t удалит только одну вкладку, а не остальные. – Joseph

+0

'var x = last_release.split ('\\ n' + '\\ t');' это делает это: '', \ t \ t, \ t \ t \ tI_Am_Interesting, \ t \ t, \ t " : null, 'все еще есть проблема, получая эту среднюю часть, хотя, похоже, что она до сих пор остается – Joseph

+0

, вы можете использовать Regex для более сложного split. Вот веб-сайт, который помогает создавать javascript regex, с некоторыми учебниками и живым тестом: http://www.regular-expressions.info/javascriptexample.html – Arcadien

0
new_string = string.replace("\n", "").replace("\t", ""); 
+1

string.replace() может находить и заменять первое условие, которое они встречают. –

+0

Да, я согласен, мы должны использовать регулярные выражения здесь. Я думаю, что решение, предоставленное Амитом Джорджем, будет работать –

+0

@SomethVictory. Вы можете использовать глобальный флаг для замены всех совпадений в строке - https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace. – whostolemyhat

3

Its простой случай зачистки все пробелы. Работа, выполняемая регулярными выражениями, выполняется красиво.

var s = " \n\t\t\t\n\t\t\t\tI Am Interesting\n\t\t \t \n\t\t"; 
s = s.replace(/[\r\t\n]+/g, ''); // remove all non space whitespace 
s = s.replace(/^\s+/, ''); // remove all space from the front 
s = s.replace(/\s+$/, ''); // remove all space at the end :) 
console.log(s); 

Дальнейшее чтение: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp

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