前提・実現したいこと
・前提
WkWebviewで表示したjsonをNativeアプリでStringで取得しています。
・実現したいこと
取得したStringの文字列から「文字列から文字列の範囲内」という形式で切り出しをしたい
例)以下の文字列から、「“個人確認ID”」を切り出したい場合、「“sub”: 」から「,“aud”」の間を切り出す
text
1"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"
※Jsonの形式は仮なので、形が適当です。
色々試していますが、行き詰まっていまして、
有識者の方からアドバイスいただけると幸いです。
宜しくお願いいたします。
該当のソースコード
WKWebviewで表示されたJson(preタグ)を取得しています。
swift
1 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { 2 // 表示されているJsonを取得 3 webView.evaluateJavaScript( 4 "document.getElementsByTagName('pre')[0].innerText", 5 completionHandler: { (text: Any?, error: Error?) in 6 if let getText = text as? String { 7 print(getText) 8 } 9 } 10 ) 11 }
試したこと①
以下は例ですが、
ある文字から文字までを切り出そうとしましたが、
これだと1文字から1文字の間しか切り出せないので、指定した文字列が切り出せず。
swift
1let str = "This is a <strong>red circle." 2let idx1 = str.index(of: "<") 3let subs = str.suffix(from: idx3!) 4let idx2 = subs.index(of: ">") 5str[idx1!...idx2!] // "<strong>"
参考サイト:
[Swift4]文字列から部分文字列を切り出す
試したこと②:指定の文字列を検索
swift
1let range = getText.range(of: "typ") 2print(range! as Any)
該当のソースコードに上記を追加して、
例えば「typ」が何文字目だとわかれば、
indexを使って指定の部分のみを切り出しができると思ったのですが、
結果が以下の様になっており、何文字目なのか読み取れませんでした。
Index(_rawBits: 786432)..<Index(_rawBits: 983040)
→これをintに変換できたら進みそうなので、調査中です。
参考サイト:
Swiftで特定の文字列を検索・置換する方法
詳細!Swift iPhoneアプリ開発 入門ノート(3)〜PART 3 ストリングとコレクション
補足情報(FW/ツールのバージョンなど)
Xcode13.2
Swift5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/11 10:01
2022/03/01 05:44