23

当我表演

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 数组中有一项

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

4

9 回答 9

56

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

"[xX]"

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

"(?i)x"

在这种情况下,x可以将任何乱七八糟的东西正确转义。

于 2013-05-16T08:07:32.803 回答
19

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

String x = "24X45";
String[] res = x.split("[xX]");
System.out.println(Arrays.toString(res));
于 2013-05-16T08:01:43.863 回答
13

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

String[] array = test.split("(?i)x"); // splits case insensitive
于 2013-05-16T08:08:22.813 回答
6

我个人更喜欢使用

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

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

于 2014-12-23T23:29:38.370 回答
5

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

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 ]
于 2021-04-15T16:39:28.377 回答
0

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

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

于 2013-05-16T08:04:01.920 回答
0

对于 JavaScript:

var test="23x34 ";
var array = test.split(\x\i);
于 2021-01-14T06:55:23.733 回答
0

这有点复杂,但它是如何实现的:

  1. 小写两个字符串(整体文本和搜索词)
  2. 跑过text.split(searchTerm)
  3. 这为您提供了一个不是搜索词的字符串数组
  4. 通过遍历此数组,您将获得每个字符串的长度
  5. 在每个字符串之间,必须有一个搜索词(已知长度)
  6. 通过找出索引,您现在可以 .slice() 原始字符串中的片段
于 2021-04-15T16:25:42.410 回答
-1

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

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

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

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

这样做的好处是,如果您想以编程方式构建定界符列表,例如,为定界符列表中的每个小写字母添加其大写 corespondent,您可以执行此操作,然后将结果传递给StringTokenizer.

于 2013-05-16T08:13:27.610 回答