swift - 如何从 Swift 中的字符串中删除空格?

标签 swift string

我需要删除标点符号周围的前导和尾随空格。

例如:Hello , World ...我是 iOS 开发新手。

我想要:> Hello, World...我是 iOS 开发新手。

我该怎么做?我试图获取字符串的组成部分并通过句子来枚举它。但这不是我需要的

最佳答案

Rob 的回答很好,但您可以通过利用 \p{Po} 正则表达式类将其精简很多。去掉标点符号周围的空格就变成了一个正则表达式替换:

import Foundation

let input = "Hello ,  World ... I 'm a newbie iOS Developer."
let result = input.replacingOccurrences(of: "\\s*(\\p{Po}\\s?)\\s*",
                                        with: "$1",
                                        options: [.regularExpression])
print(result) // "Hello, World... I'm a newbie iOS Developer."

Rob 的回答还尝试修剪前导/尾随空格,但您的输入没有任何这些。如果您确实关心这一点,您只需对结果调用 result.trimmingCharacters(in: .whitespacesAndNewlines)


这是对正则表达式的解释。删除它看起来像的双重转义

\s*(\p{Po}\s?)\s*

它由以下组件组成:

  • \s* - 匹配零个或多个空白字符(并丢弃它们)
  • (…) - 捕获组。该组内的任何内容都由替换项保留(替换项中的 $1 指的是该组)。
    • \p{Po} - 匹配“Other_Punctuation”unicode 类别中的单个字符。这包括 .'...,但不包括 (-
    • \s? - 匹配一个可选的空白字符。这会保留句号(或省略号)后的空间。
  • \s* - 再次匹配零个或多个空白字符(并将它们丢弃)。这就是将您的 , World 变成 , World 的原因。

关于swift - 如何从 Swift 中的字符串中删除空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46532885/

相关文章:

swift - 执行添加主键的 Realm 迁移

string - strconv.Atoi() 给定字符串时抛出错误

c++ - 你如何在 C++ 中连接字符串和整数?

swift - 如何制作一个 TableView 并显示消息显示 TableView 是否为空?

ios - 如何使用自动布局选择哪个标签更宽?

objective-c - 如何创建字符串缓冲区以对其进行迭代并将类型 'String.CharacterView.Index' 的值转换为预期的参数类型 'Int' ?

c++ - 字符串数据的哈希函数

ios - 将目标添加到 CocoaPods 进行扩展

java - 似乎是数字的字符串的 NumberFormatException

检查数组的第一个元素是否是 C 中的数字