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

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

ただいまの
回答率

88.92%

空白を消したいがtrimmingCharacters(in: )ではできない

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 199

KTH

score 4

空白を消して配列に入れたいのですが.trimmingCharacters(in: .whitespaces)では空白が残ってしまいます
空白を消す方法を教えてください

var dataList = ["アマランサス 玄穀", "あわ 精白粒", "あわ あわもち", "えんばく オートミール", "おおむぎ七分つき押麦", "おおむぎ 押麦", "おおむぎ 米粒麦", "おおむぎ 大麦めん 乾", "おおむぎ 大麦めん ゆで]
var pppp = [String]()
 for i in 0...158{
                let uuu = dataList[i].split(separator: ",")
                let jjj = String(uuu[3])
                let lll = jjj.trimmingCharacters(in: .whitespaces)

                pppp.append(lll)

            }
            print(pppp)
            print(dataList[0])
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • fuzzball

    2020/07/06 09:06

    「空白を消して配列に入れたい」を実現するようなコードに見えないので、何をしようとしているのかもう少し具体的に説明してください。また、この程度の長さのサンプルであれば、エラーの出ないコードを書いてください。

    キャンセル

  • KTH

    2020/07/06 10:59

    replacingOccurrencesでできましたありがとうございました!

    キャンセル

  • 退会済みユーザー

    2020/07/15 13:01

    複数のユーザーから「やってほしいことだけを記載した丸投げの質問」という意見がありました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 3

0

トリミングというのは、文字列前後のスペースを除去するだけです。
途中のスペースを除去したいのであれば置換してください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

疑問は次々に出てくるかと思いますが、まずは過去のご質問を一つひとつクリアし、その段階でわからなかったことをきちんと理解してから、次のステップに進まれるのが良いかと思います。

過去のご質問81に対し、解決済みが36というのはちょっといかがなものかと思っています。

ところで、

for i in 0...158{

この158という数字はどこから出てきたのでしょうか。
試しに

var dataList = ["アマランサス 玄穀", "あわ 精白粒", "あわ あわもち", "えんばく オートミール", "おおむぎ七分つき押麦", "おおむぎ 押麦", "おおむぎ 米粒麦", "おおむぎ 大麦めん 乾", "おおむぎ 大麦めん ゆで"]

の中で定義されている文字の数を数えてみましたが90ちょっとしかありませんでした。

もしかしたらこの時点で既に誤解しているのかもしれません。

   let uuu = dataList[i].split(separator: ",")

dataList[i]には、"アマランサス 玄穀""あわ 精白粒"といった文字列が入ってきます。これらの文字列には,が含まれていませんので、uuudataList[i]は同じものとなります。

   let jjj = String(uuu[3])

したがって、uuu[]には3番目の要素は存在せず、ここで実行時エラーとなってしまいます。
そもそも、uuu[3]には何が入ると期待していたのでしょうか。

また

   let lll = jjj.trimmingCharacters(in: .whitespaces)

ここで使っているtrimmingCharacters(in:)ですが、

Returns a new string made by removing from both ends of the receiver characters contained in a given character set.

となっています。

や、日本語で解説されたページをみるとわかりますが、このメソッドは「指定した文字列の両端から、指定したセットの文字を削除する」メソッドとなっているため、期待通りの動作がしないことがわかります。

さて、指定された文字を一括して変換する方法があるといいのですが、私が確認した限り都合の良いメソッドはありませんでした(もしかしたら見落としかもしれませんが、それはどなたかが指摘してくれるでしょう)。

一発では変換できないので、一度指定した文字で文字列を分割したあと、それを再びくっつけるという方法で解決することにします。

冗長に書けば

var result = [String]()

for i in 0..<dataList.count {
    // .whitespaceで定義された空白で一度分割
    let components = dataList[i].components(separatedBy: .whitespaces)
    // 分割された components[] をくっつける
    let removedWhiteSpaceString = components.joined()
    // 新しい配列に入れる
    result.append(removedWhiteSpaceString)

}

となりますが、一行で済ませるのであれば

let newList = dataList.map { $0.components(separatedBy: .whitespaces).joined() }

といった感じでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

check解決した方法

-2

replacingOccurrences👈

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る