我对java编程比较陌生。你会如何分割由分号分隔的以下字符串?
String; String; String; String, String; String;;String;
String; String; String; ;String;String;String;String
我想将每个String作为参数传递给构造函数(来自txt文件),但我无法为此目的找到可通过的正则表达式。构造函数有8个String参数(从两个分号;;
之间没有任何内容,我想获得一个空字符串)。在这种情况下,将创建两个单独的对象。我知道分裂一个字符串通常是如何工作的,但这对我来说似乎太棘手了。
答案 0 :(得分:3)
您的答案位于javadoc。
String toto = "A;B;C;D";
String[] tokens = toto.split(";");
答案 1 :(得分:3)
问题是String.Split
没有保留尾随的空元素:
因此,结尾的空字符串不包含在结果数组中。
要包含它们,请使用-1
作为第二个参数(请参阅demo):
String s = "String; String; String; String, String; String;;String;";
System.out.println(Arrays.toString(s.split(";", -1)));
请参阅此Java reference:
<强>
public String[] split(String regex, int limit)
强>
limit 参数控制模式的应用次数,因此会影响结果数组的长度... 如果n
为非正数,那么模式将被应用尽可能多次,并且数组可以具有任何长度 。如果n
为零,那么模式将被应用尽可能多次,数组可以具有任何长度,尾随空字符串将被丢弃。
答案 2 :(得分:1)
由于您声明要包含空格,只能在;
上拆分并希望为构造函数保留8个参数,我们将使用限制方法进行拆分。
示例:强>
String in = "String; String; String; String, String; String;;String;";
String[] s1 = in.split(";");
给出:
["String"," String"," String, String"," String"," String","","String"]
仅 7的长度是什么?失败你的构造函数。
String[] s = in.split(";",8);
给予:
["String"," String"," String"," String, String"," String","","String",""]`
什么是8长度并且可以工作。
然后,您可以使用以下命令来解决构造函数:
YourObject obj = new YourObject(s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7]);