Java 不区分大小写的String split()方法

Java 不区分大小写的String split()方法,java,string,split,Java,String,Split,当我表演的时候 String test="23x34 "; String[] array=test.split("x"); //splitting using simple letter 数组中有两个项目,分别是23和34 但当我这么做的时候 String test="23x34 "; String[] array=test.split("X"); //splitting using capitalletter 我在阵列23x34中得到一件物品 那么,有没有任何方法可以将split方法用作不

当我表演的时候

String test="23x34 ";
String[] array=test.split("x"); //splitting using simple letter
数组中有两个项目,分别是23和34

但当我这么做的时候

String test="23x34 ";
String[] array=test.split("X"); //splitting using capitalletter
我在阵列23x34中得到一件物品


那么,有没有任何方法可以将split方法用作不区分大小写的方法,或者是否有其他方法可以提供帮助

拆分中使用正则表达式模式
[xX]

String x = "24X45";
String[] res = x.split("[xX]");
System.out.println(Arrays.toString(res));

Java的String类的split方法也接受正则表达式


简而言之,这应该可以帮助您:

split
如文档所示,使用regexp。您的示例中的regexp是:

"[xX]"
另外,
(?i)
标志切换大小写不敏感。因此,以下内容也是正确的:

"(?i)x"

在这种情况下,
x
可以是任何正确转义的literal。

您也可以在正则表达式中使用嵌入的标志:

String[] array = test.split("(?i)x"); // splits case insensitive

您可以使用正则表达式作为参数来拆分
,如下所示:

"32x23".split("[xX]");
StringTokenizer st = new StringTokenizer("32x23","xX");
//                                          ^^    ^^
//                                       string delimiter
或者,您可以使用
StringTokenizer
设置其分隔符集,如下所示:

"32x23".split("[xX]");
StringTokenizer st = new StringTokenizer("32x23","xX");
//                                          ^^    ^^
//                                       string delimiter

这样做的好处是,如果您希望以编程方式构建分隔符列表,例如,为分隔符列表中的每个小写字母添加其大写共同响应,您可以这样做,然后将结果传递给
StringTokenizer

我个人更喜欢使用

String modified = Pattern.compile("x", Pattern.CASE_INSENSITIVE).matcher(stringContents).replaceAll(splitterValue);
String[] parts = modified.split(splitterValue);
通过这种方式,您可以确保任何正则表达式都可以工作,只要您对JavaScript具有唯一的拆分器值:

var test=“23x34”;
var数组=test.split(\x\i);

这有点复杂,但下面介绍如何实现:

  • 将两个字符串(全部文本和搜索词)都小写
  • 运行
    text.split(searchTerm)
  • 这将为您提供一个不是搜索词的字符串数组
  • 通过遍历这个数组,您可以得到每个字符串的长度
  • 在每个字符串之间,必须有一个搜索项(长度已知)
  • 通过计算索引,您现在可以.slice()从原始字符串中提取片段

  • 除了现有答案外,您还可以使用
    模式。不区分大小写
    标志将正则表达式模式转换为不区分大小写的模式,您可以直接使用该模式拆分字符串,例如

    String[] arr = Pattern.compile("x", Pattern.CASE_INSENSITIVE).split("23x34 ");
    
    演示:

    import java.util.Arrays;
    import java.util.regex.Pattern;
    
    public class Main {
        public static void main(String[] args) {
            Pattern pattern = Pattern.compile("x", Pattern.CASE_INSENSITIVE);
            
            System.out.println(Arrays.toString(pattern.split("23x34 ")));
            System.out.println(Arrays.toString(pattern.split("23X34 ")));
        }
    }
    
    [23, 34 ]
    [23, 34 ]
    
    输出:

    import java.util.Arrays;
    import java.util.regex.Pattern;
    
    public class Main {
        public static void main(String[] args) {
            Pattern pattern = Pattern.compile("x", Pattern.CASE_INSENSITIVE);
            
            System.out.println(Arrays.toString(pattern.split("23x34 ")));
            System.out.println(Arrays.toString(pattern.split("23X34 ")));
        }
    }
    
    [23, 34 ]
    [23, 34 ]
    

    @我相信这是真的。我昨天才意识到。+1对于
    (?I)
    ,它可以用于句子。例如:
    String[]array=“24xXx45”。拆分(“(?i)XXX”);//[24,45]
    如果你有unicode字符,你应该使用(?iu)标志来代替。@ChanTzish这个问题是关于JavaWonder的!提到
    (?i)
    真是一件好事。处理所有区分大小写的场景。这应该是一个完全令人满意的解决方案。