String 拆分函数Kotlin如何使用多个拆分参数

String 拆分函数Kotlin如何使用多个拆分参数,string,kotlin,split,String,Kotlin,Split,我是科特林的新手。我想知道拆分函数是如何工作的。请看下面的例子 示例1: var str = "Kotlin TutorialsEPTutorialaSEpKartSEpExamples" var delimiter1 = "SEP" var delimiter2 = "ASEP" var delimiter3 = "ASEPP" val parts = str.split(delimiter1, ignoreCase = true) print(parts) var str = "Kotli

我是科特林的新手。我想知道拆分函数是如何工作的。请看下面的例子

示例1:

var str = "Kotlin TutorialsEPTutorialaSEpKartSEpExamples"
var delimiter1 = "SEP"
var delimiter2 = "ASEP"
var delimiter3 = "ASEPP"
val parts = str.split(delimiter1, ignoreCase = true)
print(parts)
var str = "Kotlin TutorialsEPTutorialaSEpKartSEpExamples"
var delimiter1 = "SEP"
var delimiter2 = "ASEP"
var delimiter3 = "ASEPP"
val parts = str.split(delimiter1,delimiter2,ignoreCase = true)
print(parts)
var str = "Kotlin TutorialsEPTutorialaSEpKartSEpASEPPExamples"
var delimiter1 = "SEP"
var delimiter2 = "ASEP"
var delimiter3 = "ASEPP"
val parts = str.split(delimiter1,delimiter2,delimiter3,ignoreCase = true)
输出为(工作-所有基于“SEP”字符串的内容将被拆分):

示例2:

var str = "Kotlin TutorialsEPTutorialaSEpKartSEpExamples"
var delimiter1 = "SEP"
var delimiter2 = "ASEP"
var delimiter3 = "ASEPP"
val parts = str.split(delimiter1, ignoreCase = true)
print(parts)
var str = "Kotlin TutorialsEPTutorialaSEpKartSEpExamples"
var delimiter1 = "SEP"
var delimiter2 = "ASEP"
var delimiter3 = "ASEPP"
val parts = str.split(delimiter1,delimiter2,ignoreCase = true)
print(parts)
var str = "Kotlin TutorialsEPTutorialaSEpKartSEpASEPPExamples"
var delimiter1 = "SEP"
var delimiter2 = "ASEP"
var delimiter3 = "ASEPP"
val parts = str.split(delimiter1,delimiter2,delimiter3,ignoreCase = true)
输出是(工作-基于“SEP”和“ASEP”字符串的所有内容都将被拆分,但我不知道它是如何工作的。使用“SEP”拆分后,只会出现。但ASEP是如何拆分的?:

示例3:

var str = "Kotlin TutorialsEPTutorialaSEpKartSEpExamples"
var delimiter1 = "SEP"
var delimiter2 = "ASEP"
var delimiter3 = "ASEPP"
val parts = str.split(delimiter1, ignoreCase = true)
print(parts)
var str = "Kotlin TutorialsEPTutorialaSEpKartSEpExamples"
var delimiter1 = "SEP"
var delimiter2 = "ASEP"
var delimiter3 = "ASEPP"
val parts = str.split(delimiter1,delimiter2,ignoreCase = true)
print(parts)
var str = "Kotlin TutorialsEPTutorialaSEpKartSEpASEPPExamples"
var delimiter1 = "SEP"
var delimiter2 = "ASEP"
var delimiter3 = "ASEPP"
val parts = str.split(delimiter1,delimiter2,delimiter3,ignoreCase = true)
输出:根据第二个示例,ASEPP应该拆分,对吗

[Kotlin Tutorial, Tutorial, Kart, , PExamples]

看,p现在来了。请解释逻辑?

否,您的问题是CharSequence.split(…)“获取”所有的delimeter,而using循环只会遍历字符串并删除当前迭代中与delimeter相等的字符(vararg delimeter)。若你们在delimeter2之前写delimeter3,那个么你们会得到正确的结果

输出

[Kotlin Tutorial, Tutorial, Kart, , Examples]

不,您的问题是CharSequence.split(…)会“获取”所有的delimeter,而使用循环只会遍历字符串并删除当前迭代中等于delimeter的字符(vararg delimeter)。若你们在delimeter2之前写delimeter3,那个么你们会得到正确的结果

输出

[Kotlin Tutorial, Tutorial, Kart, , Examples]

你好@gromyk,谢谢你的回答。请看第二个例子。“使用循环只需遍历字符串并删除当前迭代中相等的字符”,如您所述,我将解释第二个示例。当替换为第一个分隔符“SEP”时,输出应为“Kotlin Tutorial Tutoriala Kart Examples”,然后在使用“ASEP”循环时,在输出中找不到任何“ASEP”字符串。所以最后的输出应该是“Kotlin Tutorial Tutoriala Kart Examples”这一个对吗?我的疑问是,我们是如何得到输出为“Kotlin Tutorial,Tutorial,Kart,Examples”的?官方文档中缺少的教程:为了避免在分隔符中的字符串有共同字符时产生歧义,此方法从字符串的开头一直到结尾,并在每个位置匹配分隔符中的第一个元素,该元素等于此实例中该位置的分隔符。你好@gromyk,谢谢你的回答。请看第二个例子。“使用循环只需遍历字符串并删除当前迭代中相等的字符”,如您所述,我将解释第二个示例。当替换为第一个分隔符“SEP”时,输出应为“Kotlin Tutorial Tutoriala Kart Examples”,然后在使用“ASEP”循环时,在输出中找不到任何“ASEP”字符串。所以最后的输出应该是“Kotlin Tutorial Tutoriala Kart Examples”这一个对吗?我的疑问是,我们是如何得到输出为“Kotlin Tutorial,Tutorial,Kart,Examples”的?官方文档中缺少的教程:为了避免在分隔符中的字符串有共同字符时产生歧义,此方法从字符串的开头一直到结尾,并在每个位置匹配分隔符中的第一个元素,该元素等于此实例中该位置的分隔符。