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+ 閱讀量

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.