首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用subSequence过滤字符串列表,而不过滤掉长度小于subSequence要求的字符串?

如何使用subSequence过滤字符串列表,而不过滤掉长度小于subSequence要求的字符串?
EN

Stack Overflow用户
提问于 2019-12-20 04:48:04
回答 2查看 306关注 0票数 1

所以现在我有一个像So {a, b, c, d, Justin, Connor, BYE1, BYE2}这样的字符串列表

现在我正尝试在subSequence(0,3)中用"BYE“过滤掉列表中的字符串。但是,如果我只是键入它,我会得到一个错误,因为列表中有一些长度较短的字符串,比如a。如果我添加一个>= 3的长度检查器,那么a,b,c,d不会出现在过滤列表中。我怎样才能使最终过滤的列表是{a,b,c,d,Justin,Connor}

至于我使用的代码,实际上只有一行:

代码语言:javascript
复制
//currentList = {a, b, c, d, Justin, Connor, BYE1, BYE2}

var filteredList: List<String> = currentList.filter { s -> (s.length >= 3 && s.subSequence(0,3) != "BYE") }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-20 05:07:41

是像这样吗?

代码语言:javascript
复制
class ExampleUnitTest {
    @Test
    fun filterList() {
        val list = listOf(
            "a",
            "b",
            "c",
            "d",
            "Justin",
            "Connor",
            "BYE1",
            "BYE2"
        )

        val filteredList = list.filter { !it.startsWith("BYE") }

        assertEquals(filteredList.size, 6)
    }
}
票数 2
EN

Stack Overflow用户

发布于 2019-12-20 05:20:36

可能与第一次尝试最相似的解决方案是

代码语言:javascript
复制
var filteredList: List = currentList.filter {
        s -> (s.length < 3 || s.subSequence(0,3) != "BYE")
}

第一次检查(s.length < 3)将允许任何小于3个字符的字符串通过。对于这些较小的字符串,布尔OR (||)将在这里短路,并且subSequence检查永远不会运行。

第二个检查(s.subSequence(0,3) != "BYE")将允许任何不是以"BYE"开头的字符串,只允许至少有三个字符的字符串。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59416708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档