【问题标题】:Turning an Int into a String将 Int 转换为字符串
【发布时间】:2018-07-05 05:26:49
【问题描述】:

我对 swift(以及完全编程)还很陌生。我正在尝试将 Int 转换为字符串。我尝试过使用 switch 语句,但每次我使用它们时,它都不会更改为字符串(也就是它打印数字 4)我正在尝试做的一个示例如下:

class Birthday(_ month: Int, _ day:Int, _ year:Int) -> String{
    //Here is where I'd like to turn my month into April

    Return (month)
}

let example = Birthday()

example(4,15,1988)

【问题讨论】:

  • return ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"][month - 1]
  • @vacawama 为什么不使用DateFormatter monthSymbols
  • @rmaddy,确实这是个好主意。了解我的评论的工作原理对初学者也很有用。

标签: swift string int


【解决方案1】:

如果您真的只想从月份编号中获取月份名称,可以执行以下操作:

let formatter = DateFormatter()
let monthName = formatter.monthSymbols[month - 1] // Assuming 1 means January

但是由于您传递的是月、日和年,您可能想要创建一个Date,然后您想要将Date 格式化为一个`String。

使用CalendarDateComponents 创建Date

let date = Calendar.current.date(from: DateComponents(year: year, month: month, day: day))

然后使用DateFormatterDate 格式化为String

let formatter = DateFormatter()
formatter.dateStyle = .long // choose a desired style
formatter.timeStyle = .none
let string = formatter.string(from: date)

【讨论】:

  • 请注意,DateFormatter 由 Foundation 框架提供,因此如果您还没有 import UIKitimport Cocoa,则需要 import Foundation
【解决方案2】:

您可以使用 dictionary 将对象相互映射。例如,月份字典可能如下所示:

let months: [Int:String] = [1:"January", 2:"February",...]
return months[4] // returns "April"

【讨论】:

  • 不要这样做。 DateFormatter 已经提供了月份名称的本地化数组。
  • @rmaddy 当然,但基于他们不理解将输入值操作到其他东西的概念的问题很清楚。 DateFormatter 适用于特定示例,但如果他们遇到这种不是预制数组的情况,他们就会知道他们可以做什么。
  • 顺便说一句-为什么要为此使用字典?为什么不是一个简单的数组?
【解决方案3】:

让您入门的简单解决方案是采用整数并返回您的月份字符串的方法。

func numberToMonth(number: Int) -> String {

    guard number > 0, number < 13 else { return "" }
    return DateFormatter().monthSymbols[number-1]
}

【讨论】:

  • 不要这样做。 DateFormatter 已经提供了所有月份的本地化名称。
  • 嗯,由于@rmaddy 的回答,现在这主要是多余的。此外,如果索引超出范围,这如何返回可选而不是崩溃?
猜你喜欢
  • 2011-10-02
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多