Swift 程序移除前导零


在处理字符串时,有时我们会遇到一些数字字符串,其前导数字为零,例如 000003232、00321 等。要从数字字符串中移除前导零 -

  • 使用 removeFirst() 和 hasPrefix() 方法

  • 使用 firstIndex() 和 dropFirst() 方法

示例

Input: String = "000003231"
                 
Output: "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("Original String:", enteredString)
print("Modified String(After deleting leading zeros):", output)

输出

Original String: 0000037763986
Modified String(After deleting leading zeros): 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("Original String:", inputStr)
print("String after removing leading zeros:", resultStr) 

输出

Original String: 0000093872
String after removing leading zeros: 3872

结论

因此,这就是我们如何从给定字符串中移除前导零的方法。讨论的方法可以从输入字符串中移除任意数量的前导零。这些方法仅移除前导零,如果您想从给定字符串的两侧移除零,则可以使用 trimmingCharacters() 函数。

更新于:2023年6月14日

1K+ 阅读量

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告