如何正确方法split(分隔执行分隔符数组字符串)「split 分隔符」

如何正确方法split(分隔执行分隔符数组字符串)

遇到的问题在使用“|”作为字串的分隔符的时候,分隔结果和预期不一样。
方法定义// 从方法的实现上, 可以了解split的参数可以是正则表达式、任意字符、符号、数字、字符串等。
public String[] split(String regex) { }重点关注因为split方法也支持正则表达式,而正则表达式存在特殊字符串的情况,这样就出现了上述问题,所以需要注意下表中的特殊字符。
特殊字符示例代码// 1.如何使用|进行分隔? String[] a = "a|b|c".split("\\|"); // 执行结果: [a, b, c] // 2.如何使用.进行分隔? String[] b = "a.b.c".split("\\."); // 执行结果: [a, b, c] // 3.如何使用正则表达式进行分隔? // 正则表达式:\d+表示一个或多个数字 String[] c = "a11b222c3333d".split("\\d+"); // 执行结果: [a, b, c, d] // 4.如何使用多个不同的分隔符进行分隔? // 分隔符可以有多个字符, 它们使用|分隔成左右两部分, 左右两边表达式之间是"或"的关系, 匹配左边或者右边. String[] d = "a,b#c@d%%e".split(",|#|@|%%"); // 执行结果: [a, b, c, d, e]高级进阶// limit默认是0,regex表示正则表达式,limit用来参数控制分隔的次数。
public String[] split(String regex, int limit) { } String[] e = "a@b@c@d@e@".split("@", -1); // 执行结果: [a, b, c, d, e, ] String[] f = "a@b@c@d@e@".split("@", 0); // 执行结果: [a, b, c, d, e] String[] g = "a@b@c@d@e@".split("@", 1); // 执行结果: [a@b@c@d@e@] String[] h = "a@b@c@d@e@".split("@", 2); // 执行结果: [a, b@c@d@e@] String[] i = "a@b@c@d@e@".split("@", 100); // 执行结果: [a, b, c, d, e, ] String[] j = "@@@".split("@", 100); // 执行结果: [, , , ] String[] k = "bo:and:fo".split("o", 100); // 执行结果: [b, :and:f, ] String[] l = "boo:and:foo".split("o", 100); // 执行结果: [b, , :and:f, , ] String[] m = "booo:and:fooo".split("o", 0); // 执行结果: [b, , , :and:f]// 1. 字符串开头出现分隔符,其余部分正常分隔,开头会分隔出一个空字符串。
// 2. 分隔符紧挨着,其余部分正常分隔,分隔符之间也会分隔出一个空字符串。
// 3. 字符串末尾出现分隔符,其余部分正常分隔,末尾会分隔出一个空字符串,是否丢弃末尾的空格需要判断limit的值:A. 如果 limit < 0,匹配到多少次,就分隔多少次,数组可以是任何长度,结尾的空字符串不会丢弃;B. 如果 limit = 0,匹配到多少次,就分隔多少次,数组可以是任何长度,并且结尾空字符串将被丢弃;C. 如果 limit = 1,不进行分隔,直接将字串变成长度为1的数组;D. 如果 limit > 1,(从左到右)最多分隔 n - 1 次,数组的长度将不会大于n, 结尾的空字符串不会丢弃。
``

联系我们

在线咨询:点击这里给我发消息