質問編集履歴
2
テキストの更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,135 +1,67 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
|
-
|
3
2
|
・前提
|
4
|
-
|
5
3
|
WkWebviewで表示したjsonをNativeアプリでStringで取得しています。
|
6
4
|
|
7
|
-
![イメージ説明](267fcdb00824d0498a5f7ec2bfc2c376.png)
|
8
|
-
|
9
|
-
|
10
|
-
|
11
5
|
・実現したいこと
|
12
|
-
|
13
6
|
取得したStringの文字列から「文字列から文字列の範囲内」という形式で切り出しをしたい
|
14
|
-
|
15
7
|
例)以下の文字列から、「“個人確認ID”」を切り出したい場合、「“sub”: 」から「,“aud”」の間を切り出す
|
16
|
-
|
17
8
|
```text
|
18
|
-
|
19
|
-
"id_token={“typ”: “JWT”,“alg”: “RS256”}.{“iss”: “https:/sample.com”,“sub”: “個人確認ID”,“aud”: [“client1”], “nonce”: “yyy”,“exp”: 1587456209,“iat”: 1587456149,“given_name”: “英字 氏名(名)”,“given_name#ja-Hani-JP”: “ローカル 氏名 (名)”,“family_name”: “英字 氏名(姓)”,“family_name#ja-Hani-JP”: “ローカル 氏名 (姓)”,“email”: “メールアドレス”, “muji_uid”: “統合ID”,“muji_user_id”: “ユーザーID”,“muji_genka_code”: “原価コード”,“muji_account_class”: “アカウント区分”},expires_in=60,state=xxx"
|
20
|
-
|
9
|
+
"id_token={“typ”: “JWT”,“alg”: “RS256”}.{“iss”: “https:/sample.com”,“sub”: “個人確認ID”,“aud”: [“client1”], “nonce”: “yyy”,“exp”: 1587456209,“iat”: 1587456149,“given_name”: “英字 氏名(名)”,“given_name#ja-Hani-JP”: “ローカル 氏名 (名)”,“family_name”: “英字 氏名(姓)”,“family_name#ja-Hani-JP”: “ローカル 氏名 (姓)”,“email”: “メールアドレス”, “test_uid”: “統合ID”,“test_user_id”: “ユーザーID”,“test_genka_code”: “原価コード”,“test_account_class”: “アカウント区分”},expires_in=60,state=xxx"
|
21
10
|
```
|
22
|
-
|
23
11
|
※Jsonの形式は仮なので、形が適当です。
|
24
12
|
|
25
|
-
|
26
|
-
|
27
13
|
色々試していますが、行き詰まっていまして、
|
28
|
-
|
29
14
|
有識者の方からアドバイスいただけると幸いです。
|
30
|
-
|
31
|
-
|
32
15
|
|
33
16
|
宜しくお願いいたします。
|
34
17
|
|
35
|
-
|
36
|
-
|
37
18
|
### 該当のソースコード
|
38
|
-
|
39
19
|
WKWebviewで表示されたJson(preタグ)を取得しています。
|
40
|
-
|
41
20
|
```swift
|
42
|
-
|
43
21
|
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
|
44
|
-
|
45
22
|
// 表示されているJsonを取得
|
46
|
-
|
47
23
|
webView.evaluateJavaScript(
|
48
|
-
|
49
24
|
"document.getElementsByTagName('pre')[0].innerText",
|
50
|
-
|
51
25
|
completionHandler: { (text: Any?, error: Error?) in
|
52
|
-
|
53
26
|
if let getText = text as? String {
|
54
|
-
|
55
27
|
print(getText)
|
56
|
-
|
57
28
|
}
|
58
|
-
|
59
29
|
}
|
60
|
-
|
61
30
|
)
|
62
|
-
|
63
31
|
}
|
64
|
-
|
65
32
|
```
|
66
33
|
|
67
|
-
|
68
|
-
|
69
34
|
### 試したこと①
|
70
|
-
|
71
35
|
以下は例ですが、
|
72
|
-
|
73
36
|
ある文字から文字までを切り出そうとしましたが、
|
74
|
-
|
75
37
|
これだと1文字から1文字の間しか切り出せないので、指定した文字列が切り出せず。
|
76
|
-
|
77
38
|
```swift
|
78
|
-
|
79
39
|
let str = "This is a <strong>red circle."
|
80
|
-
|
81
40
|
let idx1 = str.index(of: "<")
|
82
|
-
|
83
41
|
let subs = str.suffix(from: idx3!)
|
84
|
-
|
85
42
|
let idx2 = subs.index(of: ">")
|
86
|
-
|
87
43
|
str[idx1!...idx2!] // "<strong>"
|
88
|
-
|
89
44
|
```
|
90
|
-
|
91
45
|
参考サイト:
|
92
|
-
|
93
46
|
[[Swift4]文字列から部分文字列を切り出す](http://blog.livedoor.jp/eienf/archives/1070942887.html)
|
94
47
|
|
95
|
-
|
96
|
-
|
97
48
|
### 試したこと②:指定の文字列を検索
|
98
|
-
|
99
49
|
```swift
|
100
|
-
|
101
50
|
let range = getText.range(of: "typ")
|
102
|
-
|
103
51
|
print(range! as Any)
|
104
|
-
|
105
52
|
```
|
106
|
-
|
107
53
|
該当のソースコードに上記を追加して、
|
108
|
-
|
109
54
|
例えば「typ」が何文字目だとわかれば、
|
110
|
-
|
111
55
|
indexを使って指定の部分のみを切り出しができると思ったのですが、
|
112
|
-
|
113
56
|
結果が以下の様になっており、何文字目なのか読み取れませんでした。
|
114
|
-
|
115
57
|
`Index(_rawBits: 786432)..<Index(_rawBits: 983040)`
|
116
|
-
|
117
|
-
|
118
58
|
|
119
59
|
→これをintに変換できたら進みそうなので、調査中です。
|
120
60
|
|
121
|
-
|
122
|
-
|
123
61
|
参考サイト:
|
124
|
-
|
125
62
|
[Swiftで特定の文字列を検索・置換する方法](https://swift.tecc0.com/?p=127)
|
126
|
-
|
127
63
|
[詳細!Swift iPhoneアプリ開発 入門ノート(3)〜PART 3 ストリングとコレクション](https://secondflush2.blog.fc2.com/blog-date-20210319.html)
|
128
64
|
|
129
|
-
|
130
|
-
|
131
65
|
### 補足情報(FW/ツールのバージョンなど)
|
132
|
-
|
133
66
|
Xcode13.2
|
134
|
-
|
135
67
|
Swift5
|
1
本文の編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -19,6 +19,8 @@
|
|
19
19
|
"id_token={“typ”: “JWT”,“alg”: “RS256”}.{“iss”: “https:/sample.com”,“sub”: “個人確認ID”,“aud”: [“client1”], “nonce”: “yyy”,“exp”: 1587456209,“iat”: 1587456149,“given_name”: “英字 氏名(名)”,“given_name#ja-Hani-JP”: “ローカル 氏名 (名)”,“family_name”: “英字 氏名(姓)”,“family_name#ja-Hani-JP”: “ローカル 氏名 (姓)”,“email”: “メールアドレス”, “muji_uid”: “統合ID”,“muji_user_id”: “ユーザーID”,“muji_genka_code”: “原価コード”,“muji_account_class”: “アカウント区分”},expires_in=60,state=xxx"
|
20
20
|
|
21
21
|
```
|
22
|
+
|
23
|
+
※Jsonの形式は仮なので、形が適当です。
|
22
24
|
|
23
25
|
|
24
26
|
|