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

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

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

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

3回答

1202閲覧

配列の中の特定の文字の検索

lyzmfeqpxs54

総合スコア237

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

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

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2016/06/08 00:01

swiftの配列について質問がございます。
配列から特定の文字が入っている配列の番号を取得することは可能でしょうか。またその特定の文字でその配列を分割し追加するようなことは可能でしょうか。

具体的にやりたいことを説明しますと下記Arrayの配列から”$”記号が入っている配列の番号を取得し、かつArray2のような配列にしたいのです。

let Array = ["Apple", "Google$Yahoo", "Facebook"]

let Array2 = ["Apple", "Google", "Yahoo", "Facebook"]

Array.indexOf("Facebook") // 2
Array.--------("$") // 1を返すようなものはあるのでしょうか

indexOfは完全一致なので部分一致のようなものあればと思ったのですが・・・。
ご存知の方がいらっしゃいましたらご教示をお願いいたします。

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

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

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

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

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

guest

回答3

0

度々の質問で恐縮ですが別の処理のためにインデックスの取得も行いたいのですが、その場合どのように行えば良いのでしょうか。

もしご教示いただけるのであれば幸いです。

rangeOfString("$")を使用すると、文字が含まれている場合はRangeが、含まれていない場合はnilが返ります。
それを使用して以下のように書けると思います。

swift

1let array = ["Apple", "Google$Yahoo", "Facebook"] 2 3// indexArrayには"$"文字が含まれているindexの配列が入る => [1] 4let indexArray = array.enumerate().flatMap { (index, value) -> Int? in 5 return value.rangeOfString("$") == nil ? nil : index 6}

投稿2016/06/08 22:31

_Kentarou

総合スコア8490

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

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

lyzmfeqpxs54

2016/06/09 04:01

無事解決いたしました!いつもありがとうございます!
guest

0

配列をループで回しながら、各要素を split で分割し
(分割されてできた)各要素を新しい配列に追加していく
という感じでどうでしょうか。

投稿2016/06/08 00:19

takasima20

総合スコア7458

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

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

0

ベストアンサー

最終目的が"$"で区切ることで、インデックス取得はオマケだとするなら

swift

1let Array1 = ["Apple", "Google$Yahoo", "Facebook"] 2let Array2 = Array1.map{$0.characters.split{$0 == "$"}.map(String.init)}.flatMap{$0} 3 4print(Array1) 5print(Array2)

投稿2016/06/08 00:14

ozwk

総合スコア13521

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

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

lyzmfeqpxs54

2016/06/08 10:44

ご回答ありがとうございます!ご教示いただいた内容で、特定の文字でその配列を分割し追加するについては解決しました! 度々の質問で恐縮ですが別の処理のためにインデックスの取得も行いたいのですが、その場合どのように行えば良いのでしょうか。 もしご教示いただけるのであれば幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問