【问题标题】:how to convert hashtag in swift?如何快速转换主题标签?
【发布时间】:2021-08-18 20:37:25
【问题描述】:

我想提取主题标签。

func getHashtags() -> [String] {
    let words = components(separatedBy: " ")
    var hashTags = [String]()
    for word in words{
        if word.hasPrefix("#"){
            let hashtag = word.dropFirst()
            hashTags.append(String(hashtag))
        }
    }
    return hashTags
}

这种方法不是一个好的解决方案。 “我想吃#rice #eat。”主题标签可以很好地从诸如

之类的句子中提取出来

但如果句子是这样的,

主题标签无法识别换行符,因此不会提取整个主题标签。你怎么能解决这个错误?告诉我提取主题标签的函数。

【问题讨论】:

  • 请将示例数据作为文本而不是图像提供
  • 我尝试从多行字符串中提取主题标签,其代码与您的代码相似,并且效果很好,所以我猜这个问题与您的数据有关,而不是与您的代码有关。
  • 样本数据是这样的。 “hihihihii 主题标签 #hashtag #hi #asdf \n #dfd #dfsdfs”
  • 您应该编辑问题并添加它,而不是将其作为评论发布,并解释运行代码时得到的结果,因为对我来说它似乎工作正常。

标签: swift textview hashtag


【解决方案1】:

您可以将代码重新格式化为类似的内容。 string这是你的原文

func getHashtags() -> [String] {
     var words = string.components(separatedBy: "#") // Separate words by #
     var hashTags = [String]()
     // Check if the first word of sentence is a hashtag. If it is not then remove the first word
     // ex "firstWord #firstHashtag". Here "firstWord " should be removed
     var shouldRemoveFirstWord = !string.hasPrefix("#") 
     if shouldRemoveFirstWord {
         words.removeFirst()
     }
     
     for word in words{
         let trimmedWord = word.trim()
         // If the word has space then get only the first word
         let firstWord = word.components(separatedBy: " ")
         let hashtag = firstWord[0]
         hashTags.append(String(hashtag))
      }
      return hashTags
 }

而对于修剪功能,你可以这样添加

    extension String {   
           func trim() -> String {
                return self.trimmingCharacters(in: .whitespacesAndNewlines)
           }
    }

【讨论】:

  • 我可以通过稍微修改您的代码来解决它。谢谢
猜你喜欢
  • 2014-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-06
  • 1970-01-01
  • 1970-01-01
  • 2014-04-05
  • 1970-01-01
相关资源
最近更新 更多