Advertisement
Alexxik

Untitled

Mar 14th, 2024 (edited)
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 2.26 KB | None | 0 0
  1. // MARK: - Удаление лишних пробелов, при этом запятые должны быть приклеены к словам
  2.  
  3. // когда мы записываем на место l, мы l двигаем
  4. // если текущий - не пробел, то пишем на место l
  5. // если предидущий записанный символ - пробел, то текущий пробел не записываем
  6.  
  7. func collapseSpacesBasic(_ string: inout String) {
  8.     var str = Array(string).map{String($0)}
  9.    
  10.     var r = 0
  11.     var l = 0
  12.     var isPreviousSpace = true
  13.    
  14.     while r < str.count {
  15.         if str[r] == " " {
  16.             if isPreviousSpace == false {
  17.                 str[l] = str[r]
  18.                 l += 1
  19.                 isPreviousSpace = true
  20.             }
  21.         } else {
  22.             str[l] = str[r]
  23.             l += 1
  24.             isPreviousSpace = false
  25.         }
  26.         r += 1
  27.     }
  28.     print(str[0..<l])
  29.     string = str[0..<l].joined()
  30. }
  31.  
  32. var inputString = "    Привет  rerwerwewr     werwer  "
  33. collapseSpacesBasic(&inputString)
  34. print(inputString)
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45. // MARK: - запятые теперь будудут приклеиваться к словам даже если они были отделены пробелами
  46. func collapseSpacesPro(_ str: inout String) {
  47.     var chars = Array(str)
  48.    
  49.     var l = 0
  50.     var r = 0
  51.     let set: Set<Character> = [",", ":", "!", "?", "."]
  52.    
  53.     var isPreviousSpace = true
  54.    
  55.     while r < chars.count {
  56.         let char = chars[r]
  57.        
  58.         if char == " " {
  59.            
  60.             if isPreviousSpace == false {
  61.                 chars[l] = char
  62.                 l += 1
  63.                 isPreviousSpace = true
  64.             }
  65.            
  66.         } else if set.contains(char) {
  67.             chars[l-1] = char
  68.             isPreviousSpace = false
  69.         } else {
  70.             chars[l] = char
  71.             l += 1
  72.             isPreviousSpace = false
  73.         }
  74.        
  75.         r += 1
  76.     }
  77.    
  78.     chars = Array(chars[0..<l])
  79.     str = String(chars)
  80.     print(chars)
  81. }
  82. var inputStringPro = "    Привет  rerwerwewr   ,  werwer,     !   . "
  83. collapseSpacesPro(&inputStringPro)
  84. print(inputStringPro)
  85.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement