问题标签 [nsformatter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
343 浏览

swift - 如何让 NSNumberFormatter 允许使用连字符?

我有一个NSTextField限制NSNumberFormatter输入数字的方法,但它不允许我输入连字符来输入负数(即使在将“最小值”设置为“-1,000”之后)。

我可以将“ -1 ”复制/粘贴到字段中并以编程方式设置其值,但用户不能输入连字符。

有没有办法允许这样做?

谢谢。

PS,这是我尝试的自定义格式化程序(没有成功),根据 Nishant 的建议如下:

0 投票
1 回答
137 浏览

ios - NSDateFormatter 返回意外的时间值

谁能向我解释为什么以下代码返回不一致的时间值?尝试从用户指定的日期/时间字符串创建 NSDate 对象时,我得到了不正确的结果,我将下面的代码放在一起来说明问题。

此代码产生以下输出:

显然,当日期格式化程序解析组合的日期和时间字符串以创建 NSDate 对象时,出现了问题。它似乎不理解输入时区,并返回一个比它应该是几个小时的 GMT 时间(即 +4 小时)。我已将时区设置为“EDT”,所以不确定我还能做些什么来解决这个问题,除了硬编码输入中的偏移量,我宁愿不这样做。任何帮助,将不胜感激。

0 投票
1 回答
1371 浏览

ios - 键入时在自定义 UITextField 上格式化为电话号码

我有使用TextFieldEffects创建的自定义 UITextFields 。现在我有一个不同的挑战,我需要对一些 TextFieldEffects 实例使用电话号码格式,但不是全部。在这一点上,我找到了PhoneNumberKit,它似乎正在做我想做的事情。

但是,TextFieldEffects 是 UITextField 的一个实例,可以在这里看到,因此如果我更改UITextFieldPhoneNumberTextField第 23 行,它将影响所有 TextFieldEffects。

有没有办法可以将这两个库结合起来,并且能够让一些字段受到 PhoneNumberKit 的影响,但不是全部?


或者有没有更好/更方便的方法(可能是任何其他库或不使用外部库)来实现我想要实现的目标?我还有什么其他选择?这种情况下最好的方法是什么?


为了进一步讨论,我在这里问了另一个问题..

0 投票
1 回答
1366 浏览

ios - UITextField shouldChangeCharactersInRange 未检测到第一个字符

我有一个 UITextField 并且我正在尝试将其格式化为电话号码,但是由于某种原因我正在努力获取 UITextField 的第一个字母。

我究竟做错了什么?

请注意,我正在使用PhoneNumberKit来格式化电话号码(并使用PartialFormatter().formatPartial


编辑:我尝试+在 textField 文本的开头添加一个默认符号(如数字 +44 ..)

但它完全错了。它开始一直打印 ++++,然后将自身修复为 4 个字符或更多字符。

所以它就像...

我究竟做错了什么?


编辑2:

我尝试使用下面发布的答案。然而现在,它只是简单的数字。它们不与PartialFormatter().formatPartial()

0 投票
1 回答
7099 浏览

ios - 在用户输入时将 UITextField 的文本格式化为电话号码

我有一个自定义 UITextField,我试图将输入格式化为电话号码作为用户类型。我想要达到的目标:

  • 在 UITextField 上添加前缀+符号作为第一个字符,不能删除。

  • 将字符串变量和 UITextField 的文本格式化为电话号码格式(+49 291 12345678),而不是用户输入时的纯数字(4929112345678)


我研究并发现没有内置的方法。我还找到了易于使用的名为PhoneNumberKit的库,用于将输入字符串格式化为电话号码。在 Playground 中,它的工作方式类似于..

请记住,库需要将字符串+作为第一个字符才能正确格式化。


我尝试在我的 UITextField 上实现它。

如果我继续textField.text = "+\(updatedTextString as String)"评论,print(updatedTextString)在控制台上打印格式良好的字符串,但在 UI 上的 UITextField 内,它只显示简单的非结构化数字,如“4929112345678”

如果我取消注释,事情开始变得很奇怪,并且 UITextField 开始在 UI 中出现重复的字符,但是用于打印的控制台日志也变得很奇怪。我之前也试过清空textField.text = "",但也没有用。


我究竟做错了什么?我错过了什么不能让它正常工作?我相信它与我有关,而不是与图书馆本身有关。

另外,如果您有任何其他建议(或库)让我克服这个问题,请分享。

0 投票
2 回答
308 浏览

ios - `NSFormatter` 有多少个不起眼的子类?知道其他人吗?

NSDateFormatter 如果您使用 Cocoa 一段时间,您可能对和很熟悉NSNumberFormatter。它们可以方便地从日期和数字创建格式化的显示字符串,或者将日期或数字字符串转换为数值,同时支持不同的语言和区域设置。

几周前,我偶然发现了NSDateComponentsFormatter,它可以让您创建格式化的时间间隔,例如“4 小时 37 分钟 17 秒”。很酷。

还有 related NSDateIntervalFormatter,它通过比较 2 个日期来创建字符串。

然后有一些非常晦涩的 NSFormatter 子类:

编辑:

从评论中,我添加了NSPersonNameComponentsFormatter.

在 Xcode 帮助系统中搜索“NS*Formatter”会发现其中的大部分,但不是全部。(看起来必须正确索引帮助文本才能进行搜索,这很烦人。)

这使我能够找到的总数

令人讨厌的是,这些格式化程序中的许多似乎都没有语言环境属性,因此使用它们在系统默认语言环境之外的语言/语言环境中创建格式化字符串并不是很容易。如果我遗漏了什么,请告诉我。

还有其他人知道我缺少的其他格式化程序吗?这些非常晦涩难懂,但如果您需要它们,可以为您节省大量时间。

编辑#2:

问题第 2 部分:有没有办法从在系统默认区域设置以外的区域设置中缺少区域设置属性的格式化程序获取输出?他们并不都拥有和尊重一个地区财产,这似乎很愚蠢。需要为当前语言环境以外的语言/语言环境生成输出是很常见的。

0 投票
1 回答
421 浏览

ios - 如何为没有语言环境属性的 NSFormatter 指定语言环境/语言?

NSFormatter 有很多专门的子类:

我们大多数人都使用过NSNumberFormatterNSDateFormatter。它们有一个 locale 属性,可让您指定在从字符串转换为/从格式化程序支持的“本机”格式转换时使用的语言环境。其他一些人喜欢NSDateComponentsFormatter从他们的属性之一继承他们的语言环境(NSDateComponentsFormatter使用指定日历的语言环境,如果有的话。)

大多数其他人似乎没有任何方法来指定语言环境。我能想到的让它们以特定语言/区域设置生成输出的唯一方法是设置系统区域设置,获取输出/将字符串转换为数字格式,然后将其设置回来。

有没有办法为这样的格式化程序NSByteCountFormatter设置区域设置似乎不提供任何类型的区域设置?

编辑:

自从我写了这个问题以来,上面很多格式化程序的名称都发生了变化。大多数(全部?)都失去了他们的“NS”前缀。

0 投票
1 回答
45 浏览

swift - Swift NSDateFormatter 使用引号

此代码有效:

退货Dec 31 10

但是,如果我尝试Dec 31 '10使用它

没用,求Dec 31 yy

你怎么能包括报价?

0 投票
1 回答
3000 浏览

swift - 将毫秒整数转换为时间格式的字符串

这可能是一个简单的问题,但我很困惑,需要你的帮助。我需要转换这个:

进入这个:“12 34 56 789”

也就是说S是代表毫秒的整数。我需要的是把它格式化成“ hh mm ss iii

解决方案之一可能如下:

但我需要的是一种使用方法,NSDateFormatter()或者NSTimeFormatter()如果可能的话。

我查看了stackoverflow,但有太多形式的解决方案,我找不到包括毫秒在内的解决方案。(789 毫秒部分)

0 投票
3 回答
84 浏览

ios - 如何使用格式化程序将字符串日期转换为 nsdate?

我遵循 stackOverflow 的答案并编写代码,但我不知道发生了什么。它不起作用。PLZ,任何人都可以为我解决它。我使用愚弄代码....

就是这样。上面的代码不起作用 myDate 对象仍然为零