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)
除了现有答案外,您还可以使用
模式。不区分大小写
标志将正则表达式模式转换为不区分大小写的模式,您可以直接使用该模式拆分字符串,例如
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)
真是一件好事。处理所有区分大小写的场景。这应该是一个完全令人满意的解决方案。