软件构造lab1的判断矩阵是否为Magic Squares时需要知道文件中矩阵的列数,这就需要使用String类的split方法。

首先查看Java API文档:软件构造lab1——string.split的用法_java软件构造lab1——string.split的用法_字符串分割_02

也就是说可以将给定的正则表达式通过分隔符分割为几个字符串。那么在实验中,我们的分隔符就是"\t",通过将每行的正则表达式分割成一个字符串数组,数组中的元素个数就是矩阵的列数。具体的用法如下:

split用法

软件构造lab1——string.split的用法_正则表达式_03

split的参数——regex

①如果表达式不匹配输入的任何内容,返回的数组只具有一个元素,即此字符串。(尤其注意空字符串这种情况,他也是一个字符串)

②可以匹配的情况下,每一个字符串都由另一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止(数组中的字符串按照他们在此字符串出现的顺序排列)

split的参数——limit

第二个参数用于控制模式匹配使用的次数(limit默认为0)

①limit>0:模式匹配将被最多应用n-1次,数组的长度将不会大于n,数组的最后一项将包含所有超出最后匹配的定界符的输入。

②limit<0:模式匹配将应用尽可能多的次数,而且数组的长度是任何长度。

③limit=0:模式匹配将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。

split用法举例

String str=",aa,bb,,,ccc,dd,ee,";
String []s=str.split(",",2);
System.out.println(s.length);//2,因为limit=2,所以总长度最多为2,最多只能
分割一次,所以分割后的长度为2

String str=",aa,bb,,,ccc,dd,ee,";
String []s=str.split(",",0);
System.out.println(s.length);//8,因为limit=0,所以可以尽可能的分割,所以头部的逗号不会被忽略,而尾部的逗号会被忽略,因此分割后的字符串
分别为 : "","aa","bb","","","ccc","dd","ee",

String str=",aa,bb,,,ccc,dd,ee,";
String []s=str.split(",",-1);
System.out.println(s.length);//9,因为limit=0,所以可以尽可能的分割,而且头部和
尾部的逗号都不会被忽略,分割后的字符串
分别为 : "","aa","bb","","","ccc","dd","ee","",
``