teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

サンプルコードを追記

2019/11/26 06:44

投稿

takabosoft
takabosoft

スコア8356

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