Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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中多个多字符标记的StringTokenizer?_Java_Regex_Arrays_String - Fatal编程技术网

JAVA中多个多字符标记的StringTokenizer?

JAVA中多个多字符标记的StringTokenizer?,java,regex,arrays,string,Java,Regex,Arrays,String,我需要根据多个标记拆分一个字符串,这些标记也可能有多个字符,如下面给定的bellow 单词1:word2 | word3 | word4 | word5 | word6 | word7 我需要根据“:”、“|”、“| |”、“| |”、“| |”标记上述字符串。 是否可以使用StringTokenizer,或者使用正则表达式拆分对其进行标记的代码是什么??。。记住,我还需要结果数组中的令牌…您可以使用StringUtilsLang API 请查找相同的Javadocs 它有以下几种方法- 子字符

我需要根据多个标记拆分一个字符串,这些标记也可能有多个字符,如下面给定的bellow

单词1:word2 | word3 | word4 | word5 | word6 | word7

我需要根据“:”、“|”、“| |”、“| |”、“| |”标记上述字符串。
是否可以使用StringTokenizer,或者使用正则表达式拆分对其进行标记的代码是什么??。。记住,我还需要结果数组中的令牌…

您可以使用
StringUtils
Lang API

请查找相同的Javadocs

它有以下几种方法-

  • 子字符串/左/右/中
    -空安全子字符串提取
  • SubstringBefore/SubstringAfter/SubstringBetween
    -相对于其他字符串的子字符串提取

  • 这可以通过StringTokenizer实现。但这必须是一个多步骤的过程

    我不知道是否有可用的API。你可以像下面这样解决

    应采取步骤

    1.拿绳子

    2.定义要替换的正则表达式//您应该提前知道它们

    3.循环所有表达式

    4.用空格替换每个表达式

    5.现在您可以使用字符串标记器

    String str="word1:word2|word3||word4|word5|||word6|word7";
        String[] tokens={"[:]","[|]{3}","[|]{2}","[|]"};
        for (int i = 0; i < tokens.length; i++) {
            str=str.replaceAll(tokens[i], " ");
            System.out.println(str);
        }
    
    String str=“word1:word2 | word3 | word4 | word5 | | word6 | word7”;
    字符串[]标记={“[:]”、“[|]{3}”、“[|]{2}”、“[|]]”;
    for(int i=0;i
    显然,您可以像这样拆分字符串:

    line.split ("[:|]+") 
    res113: Array[java.lang.String] = Array(word1, word2, word3, word4, word5, word6, word7)
    
    但是分隔符是什么呢?嗯,显然相反:

    line.split ("[^:|]+") 
    res114: Array[java.lang.String] = Array("", :, |, ||, |, |||, |)
    

    如何区分“|”|“|”| | | |”?实际上,我还希望在结果数组中包含标记“|”、“| |”。。。word1和word2是DB表中的列名。。。我需要从DB值中将结果生成为value1:value2 | value3 | value4 | value5 | | value6 | value7.您需要结果中的分隔符吗?