Как искать большую строку - PullRequest
0 голосов
/ 30 января 2011

Привет, у меня есть следующий код

<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"]

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

Ответы [ 2 ]

2 голосов
/ 30 января 2011

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

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"]

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

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

0 голосов
/ 30 января 2011
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);
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...