回答編集履歴

2

訂正。

2017/12/06 04:45

投稿

fuzzball
fuzzball

スコア16731

test CHANGED
@@ -23,3 +23,69 @@
23
23
  //=> %40abcdefg
24
24
 
25
25
  ```
26
+
27
+
28
+
29
+ # 訂正
30
+
31
+
32
+
33
+ メタ文字はメタ文字でも、NSLogのメタ文字でした。
34
+
35
+
36
+
37
+ ```swift
38
+
39
+ var replace = base.replacingOccurrences(of: "@", with: "%40")
40
+
41
+ print("replace 1 :(replace)")
42
+
43
+ //=> replace 1 :https://line.me/R/ti/p/%40abcdefg
44
+
45
+ ```
46
+
47
+
48
+
49
+ これで変換自体は正しくできています。
50
+
51
+
52
+
53
+ おかしかったのはNSLogの使い方で、
54
+
55
+
56
+
57
+ ```swift
58
+
59
+ NSLog("replace 1 :(replace)") //これは
60
+
61
+ NSLog("replace 1 :https://line.me/R/ti/p/%40abcdefg") //これと同じ意味
62
+
63
+ ```
64
+
65
+
66
+
67
+ なので、`%40a`という書式を指定していることになります。さらに引数の指定無し。
68
+
69
+ %aというのは浮動小数点の16進表記(?)だそうで、
70
+
71
+ `空白` + `0x0p+0` + `bcde` = ` 0x0p+0bcdefg`
72
+
73
+ という表示になってしまっていたのです。
74
+
75
+
76
+
77
+ 正しくは、
78
+
79
+
80
+
81
+ ```swift
82
+
83
+ NSLog("replace 1 :%@", replace)
84
+
85
+ //=> replace 1 :https://line.me/R/ti/p/%40abcdefg
86
+
87
+ ```
88
+
89
+
90
+
91
+ となります。

1

.

2017/12/06 04:45

投稿

fuzzball
fuzzball

スコア16731

test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
 
14
14
 
15
- URLエスケしたいなら、
15
+ 汎用的にURLエンコしたいなら、
16
16
 
17
17
 
18
18