如何在java中使用字符数组分隔符拆分字符串?
像c#: java中是否有等效的方法如何在java中使用字符数组分隔符拆分字符串?,java,split,Java,Split,像c#: java中是否有等效的方法 string[] Split(char[] separator, StringSplitOptions options) 您可以将char[]转换为带有String(char[])的字符串。查看public String[]split(String regex)和java.util.regex您可能需要它。我不确定: String[] split(String) 结果: String text = "abcdefg"; System.ou
string[] Split(char[] separator, StringSplitOptions options)
您可以将
char[]
转换为带有String(char[])的字符串。
查看public String[]split(String regex)
和java.util.regex您可能需要它。我不确定:
String[] split(String)
结果:
String text = "abcdefg";
System.out.println(Arrays.toString(text.split("d|f|b")));
要实现这一点,必须使用正则表达式。它会告诉你在什么基础上必须分开。
就像有或“|”操作符一样。如果你使用
[a, c, e, g]
它将在a、b和c的基础上进行拆分。另一个功能级别是番石榴:
Splitter splitOnStuff=Splitter.on(CharMatcher.anyOf(“|,&”))
.省略空字符串();
Iterable values=splitOnStuff.split(“value1和value2 | value3,value4”);
这就是您想要的:
Splitter splitOnStuff = Splitter.on(CharMatcher.anyOf("|,&"))
.omitEmptyStrings();
Iterable<String> values = splitOnStuff.split("value1&value2|value3,value4");
publicstaticvoidmain(字符串[]args)引发异常
{
char[]aroperators={'、'、'^'、'*'、'/'、'+'、'-'、'&'、'='、''='、'%'、'('、')'、'{'、'}'、';'};
String input=“foo^bar{hello}world”;//希望在“特殊”字符上拆分
String regex=“(”+新字符串(arOperators).replaceAll(“(”),“\\\$1 |”)。replaceAll(“\\\\$$”,”);//用\转义每个字符并转换为“或”
System.out.println(regex);//仅供参考
String[]parts=input.split(regex);
System.out.println(Arrays.toString(parts));
}
输出(包括仅供参考/兴趣的最终正则表达式):
(\,|\^*\/|\+-|\&=|\\\\\=|\\\=|\%|\(|\)|\{124;\}
[foo,bar,你好,world]
Goold ol'StringTokenizer也会这样做:
(\,|\^|\*|\/|\+|\-|\&|\=|\<|\>|\=|\%|\(|\)|\{|\}|\;)
[foo, bar, hello, world]
publicstaticvoidmain(字符串[]args){
字符串delim=“,^*/+-&==%(){};”;
String str=“foo^bar{hello}world”;
StringTokenizer tok=新的StringTokenizer(str,delim);
while(tok.hasMoreTokens()){
System.out.println(tok.nextToken());
}
}
char[]aroperators={'、'、'^'、'*'、'/'、'+'、'-'、'&'、'='、'='、'%'、'('、')'、'{'、'}'、';'};我不完全确定你在找什么。我提供的split方法接受正则表达式(regex)。关于正则表达式的一个很好的教程。索引14附近的非法重复以及如何使用正则表达式???在误导他人之前,先自己阅读正则表达式。上面是一个名为regex的字符串vairble,您可以将其称为dog或catwell@Shahzeb,String.split(String)
将其参数解释为正则表达式。我想使用以下方法拆分字符串:char[]aroperators={','^','*','/','+','-','&','=',''=','%,'(','),'{','}',';'};伟大的它起作用了。谢谢这可以被接受为标准答案。
public static void main(String[] args) throws Exception
{
char[] arrOperators = { ',', '^', '*', '/', '+', '-', '&', '=', '<', '>', '=', '%', '(', ')', '{', '}', ';' };
String input = "foo^bar{hello}world"; // Expecting this to be split on the "special" chars
String regex = "(" + new String(arrOperators).replaceAll("(.)", "\\\\$1|").replaceAll("\\|$", ")"); // escape every char with \ and turn into "OR"
System.out.println(regex); // For interest only
String[] parts = input.split(regex);
System.out.println(Arrays.toString(parts));
}
(\,|\^|\*|\/|\+|\-|\&|\=|\<|\>|\=|\%|\(|\)|\{|\}|\;)
[foo, bar, hello, world]
public static void main(String[] args) {
String delim = ",^*/+-&=<>=%(){};";
String str = "foo^bar{hello}world";
StringTokenizer tok = new StringTokenizer(str, delim);
while (tok.hasMoreTokens()) {
System.out.println(tok.nextToken());
}
}