我想用单词“data ::”分割这个字符串而不是单个字符。怎么样?
String bla = "data::01000100010001000100data::0101001010101010101data::11111111111111111";
String result[] = bla.split("\\data::");
/*
* this outputs the whole string
* instead of only: 01000100010001000100*/
System.out.println(result[0]);
注意:
package test;
public class NewClass
{
public static void main(String[] args)
{
String bla = "data::0000data::1111data::010101";
// Try 1 - failed
String[] parta = bla.split("\\ddata::");
System.out.println(parta[0]);
System.out.println(parta[1]);
System.out.println(parta[2]);
// Try 2 - failed -- works
String[] partb = bla.split("data::");
System.out.println(partb[0]); // consider as empty
System.out.println(partb[1]); // starts from here
System.out.println(partb[2]);
// Try 3 - failed
String partc[] = bla.split("\\wdata::");
System.out.println(partc[0]);
System.out.println(partc[1]);
System.out.println(partc[2]);
}
}
输出失败:
run:
data::000
111
010101
0000
1111
data::000
111
010101
BUILD SUCCESSFUL (total time: 0 seconds)
答案 0 :(得分:6)
\\d
表示正则表达式中的数字。你需要简单地分开:
bla.split("data::")
由于没有单个数字后跟ata::
(模式:"\\data::"
),整个字符串由String.split(...)
返回。
答案 1 :(得分:3)
String bla = "data::01000100010001000100data::0101001010101010101data::11111111111111111";
String result[] = bla.split("data::");
测试 -
System.out.println(result[0]) //empty
System.out.println(result[1]) //01000100010001000100
答案 2 :(得分:3)
尝试Guava的Splitter课程Splitter
Iterable<String> result = Splitter.on("data::").split(bla);
好的,看看其他回复可能有些过分但值得一试。这是一个非常好的工具,因为它允许诸如“omitEmptyStrings”和“trimResults”之类的东西。