NSStringから文字を削除しますか?


95
NSString *myString = @"A B C D E F G";

スペースを削除したいので、新しい文字列は「ABCDEFG」になります。

回答:


280

あなたは使うことができます:

NSString *stringWithoutSpaces = [myString 
   stringByReplacingOccurrencesOfString:@" " withString:@""];

読みやすくするために、コードスニペットを等幅フォントでフォーマットしてください。現在、最初の文字列を区別するのは少し難しい
マイクアブドラ

4
「occurrences」は2つのrでつづられていることに注意してください。

プラス1で256に到達する見込み。smh–
Will Von Ullrich

これは、「スペース」が適切に動作するASCII値= 32(%20)文字である場合にのみ機能します。可能なすべての空白文字を削除するには、以下のJim Doveyのソリューションを使用します。
リナス

80

一度に複数のスペースをサポートしたい場合、または任意の空白をサポートしたい場合、これを行うことができます:

NSString* noSpaces =
    [[myString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]
                           componentsJoinedByString:@""];

5
一般的な使用法の場合により便利です。
mxg

私はそれが好きです!電話番号の特殊文字をすべて削除し、数字のみを保持したい。
karim

はるかに簡単:yourString = [yourString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
ダニエル

3
トリミングは、文字列の最初と最後にある場合にのみ一致する文字を削除するため、 `ABCDEF`はになりA B C D E Fます。
Jim Dovey 2013年

11

NSStringから取得

stringByReplacingOccurrencesOfString:withString:

レシーバー内のターゲット文字列のすべての出現が別の指定された文字列で置き換えられた新しい文字列を返します。

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement

パラメーター

目標

The string to replace.

置換

The string with which to replace target.

戻り値

レシーバー内のすべてのターゲットの出現が置換によって置き換えられる新しいストリング。


11

上記はすべて正常に動作します。しかし、正しい方法はこれです:

yourString = [yourString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

TRIMメソッドのように機能します。前後のスペースがすべて削除されます。

ありがとう


7
いいえ、文字列の最初と最後からスペースを削除するだけで、他の文字間のスペースは削除しません。
ジムドベイ2013年

@JimDovey私はすでにコメントでこのことを述べています。#TRIMメソッドのように機能します。#
Mitesh Khatri 2013

2
@MiteshKhatriあなたはそうしますが、それでも元の問題は解決しません。これは、先頭と末尾の空白だけでなく、文字列の中央からすべての空白を削除することです。
Jim Dovey 2013年

@JimDoveyは、すべてのスペースを削除するために、以下のコードを使用します。MyStr = [MyStr stringByReplacingOccurrencesOfString:@ "" withString:@ ""];
Mitesh Khatri 2016

1
それでも、ASCIIスペース文字のみが削除されます。ゼロ幅のスペース、Unicodeの改行しないスペース、改行、フォームフィード、タブ、垂直タブなどは、文字列に残ります。したがって、[NSCharacterSet whitespaceCharacterSet]およびの存在[NSCharacterSet whitespaceAndNewlineCharacterSet]
Jim Dovey 2016年

6

文字列がmutableの場合は、次の形式を使用して適切な場所に変換できます。

[string replaceOccurrencesOfString:@" "
                        withString:@""
                           options:0
                             range:NSMakeRange(0, string.length)];

これは、結果を入力文字列の可変インスタンスにしたい場合にも役立ちます。

NSMutableString * string = [concreteString mutableCopy];
[string replaceOccurrencesOfString:@" "
                        withString:@""
                           options:0
                             range:NSMakeRange(0, string.length)];

3

あなたはこれを試すことができます

- (NSString *)stripRemoveSpaceFrom:(NSString *)str {
    while ([str rangeOfString:@"  "].location != NSNotFound) {
        str = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
    }
    return str;
}

これがあなたを助けることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.