質問編集履歴

2

テキストの更新

2022/03/01 05:44

投稿

Risney
Risney

スコア148

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

本文の編集

2022/01/11 05:15

投稿

Risney
Risney

スコア148

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