首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift:条件字符串转换

Swift:条件字符串转换
EN

Stack Overflow用户
提问于 2019-03-12 22:16:01
回答 1查看 89关注 0票数 0

如何根据以下条件转换给定的字符串?

  • 所有大于3个字符的单词应翻译成“宾果”。
  • 必须保持资本化
  • 单词中的标点符号(例如,我们会)可以被丢弃,所有其他标点符号都必须保持。

到目前为止我的代码:

代码语言:javascript
复制
// *** Using For loop ***
var text = "I'll BUY THAT for a $1234 dollars!"
var textComponents = text.components(separatedBy: .whitespacesAndNewlines)

for i in 0 ..< textComponents.count {
    // -TODO: add code to maintain capitalization & punctuation (i.e.: !, $)
    if textComponents[i].count > 3 {
        textComponents[i] = "bingo"
    }
}

textComponents.joined(separator: " ")


// *** Using Map/Filter ***
var text = "I'll BUY THAT for a $1234 dollars!"
var textComponents = text.components(separatedBy: .whitespacesAndNewlines)
textComponents.map {
    // -TODO: add code to maintain capitalization & punctuation (i.e.: !, $)
    if $0.count > 3 {
        // ERROR: Not able reassign $0
        $0 = "bingo"
    }
}

示例

给出了一个字符串::“我要花1234美元买它!”

预期翻译:“宾果买宾果为$bingo宾果!”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-13 02:23:13

您可能至少需要三个替换词,如下所示。它可能不是完整的,因为你的需求现在没有那么固定。

代码语言:javascript
复制
  let raw = "I'll BUY THAT for a $1234 dollar!".replacingOccurrences(of: "\\b[A-Z][[a-z0-9]\\']{3,}", with: "Bingo", options: .regularExpression, range: nil)
.replacingOccurrences(of: "\\b[A-Z\\']{4,}", with: "BINGO", options: .regularExpression, range: nil)
.replacingOccurrences(of: "\\b[a-z'\\d]{4,}", with: "bingo", options: .regularExpression, range: nil)

  print(raw) // Bingo BUY BINGO for a $bingo bingo!
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55131452

复制
相关文章

相似问题

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