質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1283閲覧

Stringの文字列から「文字列〜文字列の範囲内」という形式で切り出しをしたい

Risney

総合スコア148

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2022/01/11 03:13

編集2022/03/01 05:44

前提・実現したいこと

・前提
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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

扱う文字列がJSONなら
JSONをDictionaryに変換するのがいいと思います。

投稿2022/01/11 05:22

ozwk

総合スコア13521

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Risney

2022/03/01 05:44

ディクショナリーに格納することができました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問