swift - 按位置从字符串中删除字符
问题描述
我想从字符串中按位置删除两个字符,形成示例我想从subCadenaTX4
位置 4 和 5删除字符
let fechaNacRFC = "25/12/1997"
let subCadenaTX4 = fechaNacRFC!.replacingOccurrences(of: "/", with: "", options: NSString.CompareOptions.literal, range: nil)
print(subCadenaTX4) // It will be 25121997
我读到我可以使用removeAtIndex
但在这种情况下它是什么方式?
我的预期输出:251297
解决方案
我认为通过使意图更清晰,而不是使用字符串索引来更清楚地表达这段代码。
这也为您提供了一种自然的方式来验证输入的格式是否有效。
import Foundation
// You can cache and reuse these
let parser = DateFormatter()
parser.dateFormat = "dd/MM/yyyy"
let formatter = DateFormatter()
formatter.dateFormat = "ddMMyy"
let input = "25/12/1997"
guard let date = parser.date(from: input) else {
// TODO: handle error here properly.
fatalError("The input wasn't in the expected format!")
}
let output = formatter.string(from: date)
print(output) // => 251297
想象一下,如果日期源改变了它的格式,比如 ISO 8601,为你的系统提供数据"1997-12-25"
。"/"
假设您通过首先替换为""
,然后删除第 4 个和第 5 个字符来实现您的转换。你的系统只会默默地接受这个无效的输入,然后悄悄地吐出"19972-25"
,没有任何迹象表明发生了错误。
使用这种方法,输入格式得到了简单的验证,你会发现像这样的无意义的错误,而不是默默地错误的数据。
推荐阅读
- python - python复制和粘贴word或onenote的格式化字符串
- google-sheets - 在 Google 表格中为 RGB 值查找最匹配的颜色名称
- javascript - 在 Nuxt 中嵌套 for 循环并根据值显示错误
- amazon-web-services - 如何使用 terraform 解决 AWS 中的 LimitExceeded 问题?
- visual-studio-code - VSCode如何在终端的MC中使用功能键F1-F10
- odata - C# 读取 OData $batch 多部分/混合响应一个有意义的对象
- javascript - 将 SocketIO 与 React 一起使用时,“socket_io_client__WEBPACK_IMPORTED_MODULE_7__.io 未定义”
- reactjs - gatsby-remark-images-medium-zoom 不起作用
- c# - Asp.Net Core Razor 页面网站非常慢
- java - Cassandra InvalidQueryException on Materialized View -- PRIMARY KEY 部分在 SET 部分中找到