Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将字符串数组文字转换为不带引号的数组列表_Java_Regex_String - Fatal编程技术网

Java 如何将字符串数组文字转换为不带引号的数组列表

Java 如何将字符串数组文字转换为不带引号的数组列表,java,regex,string,Java,Regex,String,简单的场景,但很难完成- 我的绳子是- String ipAdd = "["2.2.2.2","1.1.1.1","6.6.6.6","4.4.4.4"]" 我想要数组列表中的所有元素。我该怎么做 我尝试对IP和all进行模式匹配,但不起作用,通过使用拆分功能,它包括引号和括号。以下代码可能满足您的要求: public static void main(String[] args) { String st = "[\"2.2.2.2\",\"1.1.1.1\",\"6.6.6.

简单的场景,但很难完成-

我的绳子是-

String ipAdd =     "["2.2.2.2","1.1.1.1","6.6.6.6","4.4.4.4"]"
我想要数组列表中的所有元素。我该怎么做


我尝试对IP和all进行模式匹配,但不起作用,通过使用拆分功能,它包括引号和括号。

以下代码可能满足您的要求:

public static void main(String[] args) {
    String st = "[\"2.2.2.2\",\"1.1.1.1\",\"6.6.6.6\",\"4.4.4.4\"]";

    String patternString1 = "(\\d\\.\\d\\.\\d\\.\\d)";

    Pattern pattern = Pattern.compile(patternString1);
    Matcher matcher = pattern.matcher(st);
    ArrayList<String> list = new ArrayList<>();
    while(matcher.find()) {
        list.add(matcher.group(1));
    }
    for (String item : list) {
        System.out.println("" + item);
    }
}
您可以将正则表达式与捕获组一起使用,从字符串中提取IP。请参阅

使用replaceAll删除大括号,并根据逗号拆分为拆分,应可以:

public static void main(String... args) throws Exception {
    String ipAdd = "[\"2.2.2.2\",\"1.1.1.1\",\"6.6.6.6\",\"4.4.4.4\"]";
    List<String> list = Arrays.asList(ipAdd.replaceAll("\\[|\\]", "").split(","));
    for (String s : list){
        System.out.println(s);
    }

}

没有引号是什么意思?1.1.1.1在Java中不是一个有效的东西。是否要像2.2.2.2,1.1.1,6.6.6,4.4.4.4这样的字符串?这已经是字符串数组了。你到底想要什么?我想要一个包含项目2.2.2.2、1.1.1.1、6.6.6.6等的数组列表。。。你可以对arraylist说[abc,abc2,abc3],用abc和abc2,abc3作为元素。不,这是一个字符串。请解释你的答案;转储代码对问题的读者很少有用。我已经尝试过了,但如果我给IP ad 1.1.1.1.1.1.1,它是依赖于模式的。它也将接受它并作为1.1.1.1发送给matcher,我希望在列表中添加精确的字符串:您可以更改模式:string patternString1=\\d\\\.\\d*;是的,我想会有更好的选择,但是的,这就足够了。谢谢
"2.2.2.2"
"1.1.1.1"
"6.6.6.6"
"4.4.4.4"