SWIFT 检查字符串是不是以某些东西开头,但第二个字符可以是任何东西

Posted

技术标签:

【中文标题】SWIFT 检查字符串是不是以某些东西开头,但第二个字符可以是任何东西【英文标题】:SWIFT checking if a string begins with something but the second character can be anythingSWIFT 检查字符串是否以某些东西开头,但第二个字符可以是任何东西 【发布时间】:2020-03-18 19:38:44 【问题描述】:

我是使用 swift 的新手,所以我正在玩弄它,我试图弄清楚如何检查给定的字符串是否以单词“hello”开头,尽管第二个字母可以是它没有的任何东西'不必是 E,所以我可以输入 h0llo,它仍然会返回 true,这就是我想要实现的目标。

这是我目前所拥有的代码,但是它在测试中到处乱七八糟,所以在这个阶段对我来说任何帮助都是必要的。我只是添加代码,以便您可以更多地了解我正在尝试实现的目标

func check(_ givenString: String) -> Bool 
    var newString = givenString

    if newString.count > 2 
        newString.remove(at: String.Index(encodedOffset: 2))
        if newString.hasPrefix("hello") 
            return true 
         else 
            return false
        
    

print(check("h0llo"))

【问题讨论】:

我会使用正则表达式。 Apple docs & NSHipster 或者,为了学习,你可以检查三个条件 1.长度至少为5 2.第一个字母是"h" 3.范围2...4的子字符串是"llo". @Sulthan 你能举个例子吗?抱歉,我是新手,所以只是想了解很多 与您的问题无关,但String.Index(encodedOffset: 2) 是错误的。它只适用于常规字符(ascii)。并非所有字符都可以用单个字节表示。正确的方法是newString.remove(at: newString.index(newString.startIndex, offsetBy: 2))。如果您的意图是删除第二个字符,您可以简单地使用 index(after:) 方法 newString.remove(at: newString.index(after: newString.startIndex)) 【参考方案1】:

一个合理的解决方案是用正则表达式检查

func check(_ givenString: String) -> Bool 
    return givenString.range(of: "^h.llo", options: .regularExpression) != nil

插入符号^ 检查字符串的开头,点. 表示任何字符。

【讨论】:

这是完美的谢谢。我无法正确回答您,因为我的帐户是新帐户,但非常感谢 @sls96 答案仅适用于原始问题的解决方案。评论非常适合对答案做出反应。此外,如果这解决了您的问题,请考虑通过单击复选标记接受答案。

以上是关于SWIFT 检查字符串是不是以某些东西开头,但第二个字符可以是任何东西的主要内容,如果未能解决你的问题,请参考以下文章

在 Bash 中,如何检查字符串是不是以某个值开头?

如何在 Swift 中检查字符串以(前缀)开头或以(后缀)结尾

如何检查 Swift 字符串是不是只包含某些字符?

如何检查字符串是不是以回文开头?

检查字符串是不是相等,以 r 开头以 match 结尾

检查字符串是不是以 XXXX 开头