【问题标题】:Replace characters in string in swift?快速替换字符串中的字符?
【发布时间】:2017-01-11 12:23:30
【问题描述】:

我有一个字符串为“12:66 PM”。现在我想用 60 替换字符串 66。所以我想检查“:”之后的两个字符是否应该替换为 60 或任何值。

请推荐

【问题讨论】:

  • 您只是替换: 之后的字符,还是尝试更改日期/时间值?如果是后者,有更好的方法来处理这个
  • 这是一个基本的字符串处理问题。 SO 不是让其他人为您编写代码的地方。尝试自己解决问题,我们将帮助您解决问题。
  • 或者,正如 Ashley 正确指出的那样,这可能是日期和时间处理问题。您可能应该退后一步,用更笼统的术语描述您正在尝试做的事情,以及您当前的方法。如果您试图操纵日期和时间,确实有更好的方法来做到这一点。

标签: ios swift xcode string


【解决方案1】:

您可以使用正则表达式搜索和替换:

string.replacingOccurrences(of: "regexp", with: "replacement", options: .regularExpression)

所以,在你的情况下:

var time = "12:66 PM"
time.replacingOccurrences(of: ":\\d\\d", with: ":60", options: .regularExpression)
// > "12:60 PM"

将其抽象为一个函数很简单:

func replaceMinutes(in time: String, with minutes: String) -> String {
    return time.replacingOccurrences(of: ":\\d\\d", 
                                     with: ":\(minutes)", 
                                     options: .regularExpression)
}

如有必要,您可能需要检查输入字符串是否符合您的预期:

    nil != time.range(of: "^\\d\\d:\\d\\d [AP]M$", options: .regularExpression)
&&  nil != minutes.range(of: "^\\d\\d$", options: .regularExpression)

如果您无法理解其中的任何工作原理,我建议您阅读 a) basics of the Swift language 和 b) regular expressions

【讨论】:

    【解决方案2】:

    这是逻辑你怎么能做到这一点 首先,您需要获取输入变量的最后一个索引

    在 Java 中我们可以这样做

    String l_name = input .substring(input .lastIndexOf(":"));

    然后你可以用你的新输出替换 l_name 和变量 我希望它会有所帮助..

    【讨论】:

      猜你喜欢
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      • 2014-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      相关资源
      最近更新 更多