Swift 程序删除前导零
处理字符串时,我们有时会遇到一些前导数字为零的数字字符串,例如 000003232、00321 等。要从数字字符串中删除前导零,请执行以下操作:-
使用 removeFirst() 和 hasPrefix() 方法
使用 firstIndex() 和 dropFirst() 方法
示例
输入:String = "000003231" 输出:"3231 "
这里,输入字符串包含 5 个前导零,因此我们从输入字符串中删除这些零,结果字符串为 3231。
方法 1:使用 removeFirst() 和 hasPrefix() 方法
为了从数字字符串中删除前导零,Swift 提供了名为 removeFirst() 和 hasPrefix() 的内置方法。hasPrefix() 方法用于检查给定字符串是否以"0"开头。如果字符串以零开头,则使用 removeFirst() 函数从字符串中删除所有前缀零。
语法
func hasPrefix(s:String) func removeFirst()
此处 hasPrefix() 函数接受一个参数,即我们要检查其是否出现在前缀中的字符串。而 removeFirst () 函数不接受任何参数,并从字符串中删除第一个字符。
算法
步骤 1 − 创建一个以输入字符串作为参数的函数。
步骤 2 − 在函数内部创建原始字符串的副本。
步骤 3 − 然后运行 while 循环并检查字符串是否以 0 开头且字符串的长度大于 1。
步骤 4 − 如果两个条件都成立,则使用 removeFirst() 函数从字符串中删除第一个字符。此过程持续进行,直到循环遇到非零元素。
步骤 5 - 返回结果字符串。
步骤 6 - 创建字符串。
步骤 7 - 调用函数并将字符串传递给函数。
步骤 8 - 显示输出。
示例
在下面的 Swift 程序中,我们将从给定的字符串中删除前导零。为此,我们创建一个函数,该函数接受输入字符串并删除前导零。它首先创建原始字符串的副本,然后运行一个 while 循环,使用 hasPrefix() 函数检查字符串是否以 0 开头,以及字符串的长度是否大于 1。如果两个条件都成立,则使用 removeFirst() 函数从字符串中删除第一个 0。此过程持续进行,直到从字符串中删除所有前导零,之后,此函数返回一个结果字符串。
import Foundation
import Glibc
func deleteLeadingZeros(inputStr: String) -> String {
var resultStr = inputStr
while resultStr.hasPrefix("0") && resultStr.count > 1 {
resultStr.removeFirst()
}
return resultStr
}
let enteredString = "0000037763986"
let output = deleteLeadingZeros(inputStr: enteredString)
print("原始字符串:", enteredString)
print("修改后的字符串(删除前导零后):", 输出)
输出
原始字符串:0000037763986 修改后的字符串(删除前导零后):37763986
方法 2:使用 firstIndex() 和 dropFirst() 方法
要从数字字符串中删除前导零,我们使用 firstIndex() 和 dropFirst() 方法。firstIndex() 方法用于从给定序列中获取满足给定条件的指定值的第一个索引。如果未找到元素,则返回 nil。 dropFirst() 函数用于获取指定数量元素之后的所有元素。
语法
func firstIndex(where: mclosure) func dropFirst(x)
此处,hasPrefix() 函数接受一个闭包参数,该闭包接受一个元素作为参数,并返回一个布尔值,该布尔值表示给定元素是否符合条件。而 dropFirst() 方法接受一个参数,该参数表示从给定序列的开头删除的元素数量。
算法
步骤 1 − 创建一个以输入字符串作为参数的函数。
步骤 2 − 在函数内部,从给定字符串中查找第一个非零元素的索引。
步骤 3 − 如果有非零元素,则从索引处创建一个子字符串,直到给定子字符串的末尾。并使用 dropFirts() 方法从子字符串中删除第一个字符。
步骤 4 - 返回结果字符串。
步骤 5 - 创建字符串。
步骤 6 - 调用函数并将字符串传递给它。
步骤 7 - 显示输出。
示例
在下面的 Swift 程序中,我们将从给定的字符串中删除前导零。为此,我们创建一个函数,该函数接受输入字符串并删除前导零。它使用 firstIndex(where:) 方法查找第一个不等于 0 的字符的索引。如果没有找到非零字符,则表示字符串只包含零,因此它将返回空字符串。如果找到非零字符,则它会从该索引到给定字符串的末尾创建一个子字符串,并使用 dropFirst() 方法从子字符串中删除第一个字符,最后在删除前导零后返回一个字符串。
import Foundation
import Glibc
func deleteLeadingZeros(str: String) -> String {
guard let NonZeroIndex = str.firstIndex(where: { $0 != "0" }) else {
return ""
}
return String(str[NonZeroIndex...].dropFirst())
}
let inputStr = "0000093872"
let resultStr = deleteLeadingZeros(str: inputStr)
print("原始字符串:", inputStr)
print("删除前导零后的字符串:", resultStr)
输出
原始字符串:0000093872 删除前导零后的字符串:3872
结论
以上就是我们如何从给定字符串中删除前导零。上述方法可以从输入字符串中删除任意数量的前导零。这些方法只能删除前导零。如果您想从给定字符串的两侧删除零,则可以使用 trimmingCharacters() 函数。