0

我有一个使用 ajax 读取的文本文件。现在的问题是当我的文本文件中有两行字符串时。只有一个时我没有问题。

这是字符串

New Connection from: 192.168.5.10

在那里提取ip没有问题。但问题是如果有两行或更多行。

New Connection from: 192.168.5.10
New Connection from: 192.168.5.30

这是我的做法。如果文本文件中只有一行字符串,它就可以工作。

$.ajax({
    type: "GET",
    url: url,
    async: true,
    cache: false,
    dataType: "JSON",
    success: function(data) {

        lines = data.lines;
        var ip;
        var ipset;

        $(".dev").empty();

        for (var i = 0; i < lines.length; i++) {

            $(".dev").append(lines[i] + "\n");

            ip = lines[i];

            console.log(getIP(ip));

            ipset = getIP(ip);
        }
    }
});​

getIP 函数是:

function getIP(line) {
    var out =line.split(": ");
    return out[1];
}

我怎样才能让它只从字符串中获取 IP?

4

3 回答 3

0

尝试更换

lines = data.lines;

lines = data.split('\n');
于 2012-11-01T22:01:07.723 回答
0

它们很可能是按newline字符分隔的。所以你需要newline在得到之前分开IP

function getIP(line){
    var out = line.split("\n"); //returns lines

    var ips = []

    for (var i = 0; i < out.length; i++ ) {
       ips.push(out.split(': ')[1]);
    }

    return ips;
}

这个函数现在将返回一个 IP 地址数组。

如果你只想要第一个,那么你可以getIP(ip)[0]。尝试让我知道这是否适合您。

于 2012-11-01T21:48:26.187 回答
0

您可以使用正则表达式来提取 IP:

function getIP(lines)
{
   var result = lines.match(/[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}/gm);
   return result;
   //result is an array
}
于 2012-11-01T21:59:18.587 回答