无法在数组类型String []上调用split(String)

时间:2019-02-16 14:10:47

标签: java

我想实现一个将ip检查到数组中的代码。我尝试过:

        // 123.11.1.1, 123.1.1.12, 123.322.12.1
        String[] list = merchant.getAllowed_ip_address().split(",");

        String ip = request.getRemoteAddr();
        for (ip : list.split(",")) {
            if (!ip.trim().equals(request.getRemoteAddr().trim())) 
            {
               // Not in list
            }
        }

但是我得到Cannot invoke split(String) on the array type String[]。你知道我该怎么解决吗?

3 个答案:

答案 0 :(得分:3)

您无法在列表上进行split,一旦您分割了字符串,便拥有了所有IP的数组,那么您可以检查

    // 123.11.1.1, 123.1.1.12, 123.322.12.1
    String[] list = merchant.getAllowed_ip_address().split(",");

    String ip = request.getRemoteAddr();

    for (String allowedIP : list) {
        if (!ip.trim().equals(allowedIP.trim())) {
            // Not in list
        }
    }

此外,您可以为了简单起见

String ip = request.getRemoteAddr();
boolean notExist = Arrays.stream(merchant.getAllowed_ip_address().split(","))
                .map(String::trim)
                .noneMatch(ip::equals);

答案 1 :(得分:0)

当ip在列表中时,它将变量“ inthelist”设置为true,否则设置为false。进行了严格的均等比较,如果需要,可以用更复杂的方法代替。

final FirebaseUser user = auth.currentUser().then((FirebaseUser user) {
  final userid = user.uid;
});

答案 2 :(得分:0)

for (int i=0;i<list.length ;i++) {
            if (!ip.trim().equals(list[i].trim())) 
            {
               // Not in list
            }

cannot调用数组上的split。该数组已包含分散的IP's。您只需要检查该值是否匹配即可。