如何搜索大型字符串

时间:2011-01-30 20:30:06

标签: javascript html xmlhttprequest

您好我有以下代码

<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 个答案:

答案 0 :(得分: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"]

请注意,如果param将包含对正则表达式具有特殊含义的字符(例如*+]),那么您必须通过前置转义来转义它们反斜杠。

需要初始\b以确保您的搜索键仅在项目开头接受。

答案 1 :(得分: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);
}

这是我能看到解决的唯一方法。但也许你已经教过这个以及在那里问别的东西。