我有以下数据文字:
[data]A[/data]
aaa
4 5 8
[data]B[/data]
bbb
3 1 9
[data]C[/data]
ccc
6 5 2
...
我想将它们分成以下3个单元:
第一单元:
[data]A[/data]
aaa
4 5 8
第二单元:
[data]B[/data]
bbb
3 1 9
告诉你:
[data]C[/data]
ccc
6 5 2
所以我的代码看起来像这样:
String Units[]=dataText.split("[data]");
然而,这没有做到这一点,分裂它的正确方法是什么?
如果我使用正则表达式,我应该如何编写表达式?
使用正则表达式(?ms)(?<=.)(?=^\[)
:
String[] units = dataText.split("(?ms)(?<=.)(?=^\\[)");
有关演示,请参阅regex101.com。
说明:
(?ms) Turn on MULTILINE ('^' and '$' match after/before line terminator)
and DOTALL (aka "single line", '.' matches any character)
(?<=.) Must be preceded by a character (needs 's' flag)
Used to prevent matching very first '['
(?=^\[) Must be followed by a '[' at the beginning of a line (needs 'm' flag)
您可以使用BufferedReader:
BufferedReader br = new BufferedReader(new StringReader(dataString));
像这样迭代字符串:
int lineCounter = 0;
int arrayCounter = 0;
String line = null;
while( (line = br.readLine()) != null )
{
units[arrayCounter] += line;
if (lineCounter >= 2) {
arrayCounter++;
lineCounter = 0;
}
}