在Swift中重新排序字符串

r55awzrz  于 2023-11-16  发布在  Swift
关注(0)|答案(3)|浏览(116)

所以,假设我有一个字符串:“abc”,我想改变每个字符的位置,这样我就可以有“cab”和后来的“bca”。我希望索引0的字符移动到1,索引1的字符移动到2,索引2的字符移动到0。
我在Swift中有什么可以做到这一点?还有,让我们假设我用数字代替字母。有没有更简单的方法来处理整数?

oalqel3c

oalqel3c1#

雨燕2:

extension RangeReplaceableCollectionType where Index : BidirectionalIndexType {
  mutating func cycleAround() {
    insert(removeLast(&self), atIndex: startIndex)
  }
}

var ar = [1, 2, 3, 4]

ar.cycleAround() // [4, 1, 2, 3]

var letts = "abc".characters
letts.cycleAround()
String(letts) // "cab"

字符串
雨燕一号:

func cycleAround<C : RangeReplaceableCollectionType where C.Index : BidirectionalIndexType>(inout col: C) {
  col.insert(removeLast(&col), atIndex: col.startIndex)
}

var word = "abc"

cycleAround(&word) // "cab"

fykwrbwg

fykwrbwg2#

Swift Algorithms package中有一个rotate命令

import Algorithms

let string = "abcde"
var stringArray = Array(string)
for _ in 0..<stringArray.count {
    stringArray.rotate(toStartAt: 1)
    print(String(stringArray))
}

字符串
测试结果:

bcdea
cdeab
deabc
eabcd
abcde

wnrlj8wa

wnrlj8wa3#

Swift 5.7.2

我遇到了一个问题,我需要标准化来自不同来源的库存编号。一些来源会在单位代码的数字部分之前放置一个字母字符,而另一些来源会将字母字符附加到单位代码的数字部分的末尾。我需要的格式是字符必须出现在数字之前。
我首先要把字符串分解成单个的字符串元素,因为单元代码使用破折号,但是一旦这样做了,它就非常简单了。
我希望这是Swift原生的,没有任何额外的框架或包。

方法:

func swapEndLetter(string: String) -> String {
    var string = string
    guard let letter = string.last?.isLetter else { return string }
    if letter {
        return "\(string.remove(at: string.index(before: string.endIndex)))\(string)"
    }
    return string
}

字符串

用法:

var unitCode = "unit-code-1102a"
var split = unitCode.components(separatedBy: "-") // ["unit", "code", "1102a"]
split[split.count-1] = swapEndLetter(string: String(split[split.count-1])) //
unitCode = split.joined(separator: "-") // "unit-code-a1102"

相关问题