首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从字符串中间移除字符?Swift 4

如何从字符串中间移除字符?Swift 4
EN

Stack Overflow用户
提问于 2019-06-21 00:09:46
回答 2查看 1.8K关注 0票数 0

我正在尝试删除字符串中间的一个字符。

这就是我想做的

代码语言:javascript
复制
let index = 4
let str = "abcdefg"
let strRemoved = str.remove(at: index) //Removes only character at pos 4
print(strRemoved) //prints 'abcdfg'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-21 02:53:52

让我们看看如何从String中间删除一个字符,方法是查看一个示例用例,在这个示例中,我们从字符串中删除随机字母,直到字符串为空为止。

String.remove(at:)方法1:使用删除字符

这里,我们使用String.remove(at:)方法来选择要删除的字符。不幸的是,String没有使用Int进行索引,因此需要提供一个String.Index值:

代码语言:javascript
复制
var str = "abcdefg"

while str.count > 0 {
    let randomIndex = Int.random(in: 0 ..< str.count)
    str.remove(at: str.index(str.startIndex, offsetBy: randomIndex))
    print(str)
}

输出:

bfg bf

方法2:使用prefix() dropFirst() 构造一个新的 String

或者,您可以使用prefix()dropFirst()来选择原始String的一部分来构造新的String。这两种方法都返回类型Substring,因此在连接部分之后有必要调用String()

代码语言:javascript
复制
var str = "abcdefg"

while str.count > 0 {
    let randomIndex = Int.random(in: 0 ..< str.count)
    str = String(str.prefix(randomIndex) + str.dropFirst(randomIndex + 1))
    print(str)
}

输出:

abcdeg abcde acde acd c

str方法3:将转换为

如果要重复添加、删除和更改字符,请考虑将String转换为[Character]。这要容易得多,因为[Character]可以使用Int进行索引,而且您可以轻松地将名为chars[Character]转换为带有String(chars)String

代码语言:javascript
复制
var str = "abcdefg"
var chars = Array(str)

while chars.count > 0 {
    let randomIndex = Int.random(in: 0 ..< chars.count)
    chars.remove(at: randomIndex)
    print(String(chars))
}

输出:

acefg aceg aeg ae a

票数 0
EN

Stack Overflow用户

发布于 2019-06-21 01:35:29

不能。String集合的索引它不是Int,但是可以实现以Int作为参数的自己的remove(at:)方法。请注意,要从集合中删除元素,需要将其声明为变量:

代码语言:javascript
复制
extension StringProtocol where Self: RangeReplaceableCollection {
    @discardableResult
    mutating func remove(at offset: Int) -> Element? {
        guard let index = index(startIndex, offsetBy: offset, limitedBy: endIndex) else { return nil }
        return remove(at: index)
    }
}

操场测试:

代码语言:javascript
复制
let index = 4
var abc = "abcdefg"

if let removedChar = abc.remove(at: index) { // Removes at pos 4
    print(removedChar) // prints 'e'
    print(abc) // prints 'abcdfg'
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56695330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档