Kotlin String 可以使用正则表达式过滤内容(split), 并且转成Array (toTypedArray), 如下:
val arrays = stringList.split(";".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
由Array 可以完成查找功能(Arrays.stream(XX).anyMatch),
val found = Arrays.stream(arrays).anyMatch { t -> t == newValue }
例如可以实现从以分号(l;) 区分的一串字符中, 查找有没特定的字符串,如果没有,则把当前查找的字符串添加进去,
测试代码如下:
class ArrayTest {
companion object{
@JvmStatic
fun main(args: Array<String>) {
val stringList = "2313;133434;1232321;1232312;1232312;43432432;342342;2343123;2343241;64564"
println("stringList = $stringList")
// 以; 过滤并转成Array
val arrays = stringList.split(";".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
println("arrays println ======================start ================")
arrays.forEach { print("$it ") }
println()
println("arrays println ======================end ================")
addNewString(arrays, stringList)
//removeString(arrays, stringList)
}
@JvmStatic
private fun addNewString(arrays: Array<String>, stringList: String) {
var newValue = "88888"
println("newValue = $newValue")
// 从Array 中确认有没需要查找的子串
val found = Arrays.stream(arrays).anyMatch { t -> t == newValue }
var newList = StringBuilder()
// 没有找到则添加进去
if (!found) {
newList = StringBuilder(stringList).append(';').append(newValue)
}
println("newList = $newList")
}
}
输出:
stringList = 2313;133434;1232321;1232312;1232312;43432432;342342;2343123;2343241;64564
arrays println ======================start ================
2313 133434 1232321 1232312 1232312 43432432 342342 2343123 2343241 64564
arrays println ======================end ================
newValue = 88888
newList = 2313;133434;1232321;1232312;1232312;43432432;342342;2343123;2343241;64564;88888
同样,也可以实现查找后删除,如
@JvmStatic
private fun removeString(arrays: Array<String>, stringList: String) {
var removeString = "2313"
println("removeValue = $removeString")
// 从Array 中确认有没需要查找的子串
var newList = StringBuilder()
// 没有找到则添加进去
for (checkSubString in arrays) {
if (removeString != checkSubString) {
if (newList.isEmpty()) {
newList.append(checkSubString)
} else {
newList.append(';').append(checkSubString)
}
}
}
println("newList = $newList")
}
输出为(删除第一个):
stringList = 2313;133434;1232321;1232312;1232312;43432432;342342;2343123;2343241;64564
arrays println ======================start ================
2313 133434 1232321 1232312 1232312 43432432 342342 2343123 2343241 64564
arrays println ======================end ================
removeValue = 2313
newList = 133434;1232321;1232312;1232312;43432432;342342;2343123;2343241;64564