繁体   English   中英

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

[英]Case insensitive String split() method

当我执行

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 方法用作不区分大小写的方法,或者是否有任何其他方法可以提供帮助?

split使用,正如文档所建议的那样,一个正则表达式。 您的示例的正则表达式将是:

"[xX]"

此外, (?i)标志切换不区分大小写。 因此,以下内容也是正确的:

"(?i)x"

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

split使用正则表达式模式[xX]

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

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

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

我个人更喜欢使用

String modified = Pattern.compile("x", Pattern.CASE_INSENSITIVE).matcher(stringContents).replaceAll(splitterValue);
String[] parts = modified.split(splitterValue);

通过这种方式,您可以确保任何正则表达式都可以工作,只要您有一个唯一的拆分器值

除了现有的答案,您可以使用Pattern.CASE_INSENSITIVE标志将您的正则表达式模式转换为不区分大小写的模式,您可以直接使用它来分割字符串,例如

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 ]

对于 JavaScript:

var test="23x34 ";
var array = test.split(\x\i);

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

为了简短起见,这应该对您有所帮助: http : //www.coderanch.com/t/480781/java/java/String-split

这有点复杂,但这是它的实现方式:

  1. 小写两个字符串(整体文本和搜索词)
  2. 运行text.split(searchTerm)
  3. 这为您提供了一个不是搜索词的字符串数组
  4. 通过遍历这个数组,你会得到每个字符串的长度
  5. 在每个字符串之间,必须有一个搜索词(已知长度)
  6. 通过找出索引,您现在可以 .slice() 原始字符串中的片段

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

"32x23".split("[xX]");

或者您可以使用StringTokenizer来设置其分隔符集,如下所示:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM