回答編集履歴

1

サンプルコードを追記

2019/11/26 06:44

投稿

takabosoft
takabosoft

スコア8356

test CHANGED
@@ -1 +1,31 @@
1
1
  正規表現を使って抽出すればOKです。
2
+
3
+
4
+
5
+ ----
6
+
7
+ 自分でも一応試してみましたが、こんなので良いのかなと思います。
8
+
9
+
10
+
11
+ ```swift
12
+
13
+ let text = "hogehoge【xxx】abcdefg"
14
+
15
+ let nstext = text as NSString
16
+
17
+
18
+
19
+ if let regex = try? NSRegularExpression(pattern: "【(.*?)】"),
20
+
21
+ let match = regex.firstMatch(in: text, options: [], range: NSRange(location: 0, length: nstext.length)) {
22
+
23
+ print(nstext.substring(with: match.range(at: 1))) // xxx
24
+
25
+ }
26
+
27
+ ```
28
+
29
+
30
+
31
+ String.countを使ってNSRangeを生成すると[うまくいかない](https://qiita.com/SolaRayLino/items/8319beb507b741189411)という記事を見たことがあるので、NSString.lengthを使っています(この辺ややこしいです)。