Ios 如何从用户输入中获取子字符串?
我编写了代码,当用户在文本字段中输入字符并对其进行运算时,获取字符 这:Ios 如何从用户输入中获取子字符串?,ios,swift,Ios,Swift,我编写了代码,当用户在文本字段中输入字符并对其进行运算时,获取字符 这: 但是有一个是错误的textMeli。text是一个字符串 myChar是一个字符串 不能使用括号表示法从字符串访问字符 let string = "Foo" let character = Array(string.characters)[0] 查看字符串结构的 您将看到可以通过characters属性访问字符串的字符。这将返回字符的集合。使用集合初始化一个新数组,然后可以使用括号表示法 let string = "Fo
但是有一个是错误的
textMeli。text
是一个字符串
myChar
是一个字符串
不能使用括号表示法从字符串
访问字符
let string = "Foo"
let character = Array(string.characters)[0]
查看字符串
结构的
您将看到可以通过characters
属性访问字符串的字符。这将返回字符的集合
。使用集合初始化一个新数组,然后可以使用括号表示法
let string = "Foo"
let character = Array(string.characters)[0]
字符
将属于字符
类型。
然后需要将字符
转换为某种数字类型(浮点
,整数
,双精度
,等等)以使用乘法
类型在编程中很重要。确保跟踪,以便了解可以使用的函数和属性
从肥皂盒里拿出来。看起来您正在尝试获取字符串并将其转换为数字。我会跳过使用字符的步骤。有两个文本字段,一个接受第一个数字(作为字符串
),另一个接受第二个数字(作为字符串
)。使用将字符串转换为数字。数字格式化程序将返回NSNumber。查看,您将看到可以将NSNumber“转换”为您想要的任何数字类型。然后你可以使用乘法
大概是这样的:
let firstNumberTextField: UITextField!
let secondNumberTextField: UITextField!
let numberFormatter = NumberFormatter()
let firstNumber = numberFormatter.number(from: firstNumberTextField.text!)
let secondNumber = numberFormatter.number(from: secondNumberTextField.text!)
let firstInt = firstNumber.integerValue //or whatever type of number you need
let secondInt = secondNumber.integerValue
let product = firstInt * secondInt
处理Swift字符串有点棘手,因为它们处理Unicode和“grapheme集群”的方式。不能使用这样的数组语法索引字符串对象 Swift也不像C那样将字符与8位
int
s互换,所以你不能像现在这样对字符进行数学运算。您必须将字符串
转换为Int
类型
您可以创建String类的扩展,该扩展允许您使用字符串的整数下标:
extension String {
subscript (index: Int) -> String {
let first = self.startIndex
let startIndex = self.index(first, offsetBy: index)
let nextIndex = self.index(first, offsetBy: index + 1)
return self[startIndex ..< nextIndex]
}
}
及
请注意,上面的下标扩展效率低下,对于任何类型的“繁重”字符串解析都是一种糟糕的方式。每次使用方括号索引都会产生与O(n)
一样糟糕的性能,这意味着遍历整个字符串会产生几乎O(n^2)
的性能,这是非常糟糕的
上面的代码还缺少范围检查或错误处理。如果传递的下标超出范围,它将崩溃
请注意,将多个字符作为输入非常奇怪,然后对单个字符进行数学运算,就好像它们是单独的值一样。这看起来像是非常糟糕的用户界面
你为什么不从细节上退一步,告诉我们你在更高层次上想做什么 您的数学错误或输入的字符错误?伙计,用户在文本字段中输入10个数字,我需要从文本字段中获取字符并保存到变量中,然后使用10个数字进行数学运算,并将结果显示给用户,例如用户给文本字段2345123456,我需要这样做:number1=2,number2=3,number3=4,number4=5,number6=1,,,,,,,,,,实际上,您不能在Swift 3中使用
字符[0]
。String.characters为您提供了类型为String.CharacterView
的结果,您必须使用类型为String.CharacterView.Index
的值才能对其进行索引。@Duncan C是的,您是对的。苹果的文档仍然声称这是可能的,但实际上并没有尝试运行或构建代码。我已经解决了这个问题。
let inputString = textMeli.text
let firstVal = Int(inputString[0])
let secondVal = Int(inputString[2])
let result = firstVal * 3 + secondVal * 7