Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 6中方括号之间的一些文本_Java_Java 6 - Fatal编程技术网

删除Java 6中方括号之间的一些文本

删除Java 6中方括号之间的一些文本,java,java-6,Java,Java 6,是否有可能改变这一点: [quote]user1 posted: [quote]user2 posted: Test1 [/quote] Test2 [/quote] Test3 为此: Test3 使用Java6?确定,编写了一些非正则表达式的解决方案 String str ="[quote]user1 posted:[quote]user2 posted:Test1[/quote]Test2[/quote]

是否有可能改变这一点:

[quote]user1 posted:
      [quote]user2 posted:
              Test1
      [/quote]
      Test2
[/quote]
Test3
为此:

Test3

使用Java6?

确定,编写了一些非正则表达式的解决方案

    String str ="[quote]user1 posted:[quote]user2 posted:Test1[/quote]Test2[/quote]Test3";
    String startTag = "[quote]";
    String endTag = "[/quote]";
    String subStr;
    int startTagIndex;
    int endTagIndex;
    while(str.contains(startTag) || str.contains(endTag)) {
        startTagIndex = str.indexOf(startTag);
        endTagIndex = str.indexOf(endTag) + endTag.length();
        if(!str.contains(startTag)) {
            startTagIndex = 0;
        }
        if(!str.contains(endTag)) {
            endTagIndex = startTagIndex + startTag.length();
        }
        subStr = str.substring(startTagIndex, endTagIndex);;
        str = str.replace(subStr, "");
    }

好的,写了一些非正则表达式的解决方案

    String str ="[quote]user1 posted:[quote]user2 posted:Test1[/quote]Test2[/quote]Test3";
    String startTag = "[quote]";
    String endTag = "[/quote]";
    String subStr;
    int startTagIndex;
    int endTagIndex;
    while(str.contains(startTag) || str.contains(endTag)) {
        startTagIndex = str.indexOf(startTag);
        endTagIndex = str.indexOf(endTag) + endTag.length();
        if(!str.contains(startTag)) {
            startTagIndex = 0;
        }
        if(!str.contains(endTag)) {
            endTagIndex = startTagIndex + startTag.length();
        }
        subStr = str.substring(startTagIndex, endTagIndex);;
        str = str.replace(subStr, "");
    }

我将其编译为Java8。我不相信我正在使用Java6中没有的任何功能

编辑:
System.lineSeparator()
已添加到Java 1.7中。我把电话换成了
System.getProperty(“line.separator
”)


我将其编译为Java8。我不相信我正在使用Java6中没有的任何功能

编辑:
System.lineSeparator()
已添加到Java 1.7中。我把电话换成了
System.getProperty(“line.separator
”)


在Java中不能使用正则表达式匹配嵌套括号。更好地使用自定义语法分析器代码看起来您想要创建一个正则表达式,但不知道从哪里开始。请查看资源,它有很多提示。另外,有关一些基本的正则表达式信息,请参阅post。一旦您准备好一些表达式,并且解决方案仍然存在问题,请使用最新的详细信息编辑问题,我们将很乐意帮助您解决问题。提醒:是的,这是可能的。您使用Java6有什么特别的原因吗?它很古老,不再受支持。甚至下一个版本(Java 7)的支持也即将结束。@KonradRudolph-hmmm。。。我正在使用Java6开发一些旧的spring系统。现在更新它是不可能的…@KonradRudolph不是现在的问题。问题是删除文本。在Java中,使用正则表达式无法匹配嵌套括号。更好地使用自定义语法分析器代码看起来您想要创建一个正则表达式,但不知道从哪里开始。请查看资源,它有很多提示。另外,有关一些基本的正则表达式信息,请参阅post。一旦您准备好一些表达式,并且解决方案仍然存在问题,请使用最新的详细信息编辑问题,我们将很乐意帮助您解决问题。提醒:是的,这是可能的。您使用Java6有什么特别的原因吗?它很古老,不再受支持。甚至下一个版本(Java 7)的支持也即将结束。@KonradRudolph-hmmm。。。我正在使用Java6开发一些旧的spring系统。现在更新它是不可能的…@KonradRudolph不是现在的问题。问题是删除文本。这将删除从第一次出现的
“[quote]”
到最后一次出现的
“[/quote]”
的整个文本,因此,结果中不可能有另一个匹配范围,因此无需将其放入循环中。因为这与实际嵌套无关,所以可以制定一个等价的正则表达式,即
input=input.replaceFirst(“\\\[quote].\\[/quote],”)
也会这样做。这将删除从第一次出现的
“[quote]”
到最后一次出现的
“[/quote]”
的整个文本,因此,结果中不可能有另一个匹配范围,因此无需将其放入循环中。因为这与实际嵌套无关,所以可以制定一个等价的正则表达式,即
input=input.replaceFirst(“\\\[quote].\\[/quote],”)也会这样做。