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 检查字符串是不是以某些东西开头,但第二个字符可以是任何东西的主要内容,如果未能解决你的问题,请参考以下文章