2011-01-30 3 views
0

Привет У меня есть следующий кодКак искать большую строку

<html> 
<head> 
<script type="text/javascript"> 
var xmlhttp; 
var allSearchResults = []; 
function loadXMLDoc(url,cfunc) 
{ 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=cfunc; 
xmlhttp.open("GET",url,true); 
xmlhttp.send(); 
} 
function myFunction(paramm) 
{ 
loadXMLDoc("ajax_info.txt",function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    var txt=xmlhttp.responseText; 

    if (txt.match(paramm)!= -1){ 
      //store all instances in allSearchResults array Here 
    } 
     else{ 
      document.getElementById("myDiv").innerHTML = paramm; 
      } 

    } 
    }); 
} 
</script> 
</head> 
<body> 

<div id="myDiv"><h2>Let AJAX change this text</h2></div> 
<button type="button" onclick="myFunction('CXS101289')">Change Content</button> 

</body> 
</html> 

ajax_info.txt

CXS101289_5_R1A06_100628150914 
CXS101289_5_R1A06_100628343414 
CXS10rfe_5_R1A06_100628150955 
CXS101349_5_R1A06_100628150432 
CXS154f89_5_R1A06_100628150914 
CXS101289_5_R1A06_10062456914 
CXS101369_5_R1A06_100628150914 
CXS15679_5_R1A06_100628150914 

Так что я хочу, чтобы найти этот файл для «CXS101289». Поэтому после того, как я выполнил этот метод, массив «allsearchResults» должен содержать ["CXS101289_5_R1A06_100628343414","CXS101289_5_R1A06_100628343414","CXS101289_5_R1A06_10062456914"]

Любая умная идея о том, как реализовать это?

ответ

0
function findMatched(text, keyword) { 
    var arr = text.split('\n'); 
    var result = []; 
    for(var i = 0, len = arr.length; i < len; i++) { 
    if(arr[i].match(keyword)) { 
     result.push(arr[i]); 
    } 
    } 
    return result; 
} 

//...and in your code 
if (txt.match(paramm)!= -1){ 
    allSearchResults = findMatched(txt, paramm); 
} 

Это единственный способ, которым я могу его решить. Но, возможно, вы уже учили этому и где спрашиваете что-то еще.

+0

Еще один быстрый вопрос: как я могу написать символ «в текстовой строке? Например, пример примера =« hello »end» Можете ли вы ссылаться на сайт, где я могу видеть все эти символы? – Anders

+0

Я хочу добавить следующее в строку Example_1 Anders

+0

@ Аnders: Вы можете избежать внутреннего двойного с обратной косой чертой. Например, 'var example =" hello \ "end"; ' – mhitza

2

Это должно делать то, что вы ищете

result = txt.match(new RegExp("\\b" + param + "\\S*", "g")); 

, например, после того, как

param = "x"; 
txt = "x_1 y_2 z_3 x_4 yx_5 z_6 x_7"; 
result = txt.match(new RegExp("\\b" + param + "\\S*", "g")) 

["x_1", "x_4", "x_7"] результата

Обратите внимание, что если параметр будет содержать Charaters, которые имеют специальное значение для регулярного выражения (например, * или + или ]), то у вас есть t o избегать их, добавив обратную косую черту.

Необходимо, чтобы начальный \b был необходим, чтобы ваш ключ поиска принимался только в начале элемента.

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