0

NSMutableStringを選択的にトリミングする方法を知りたいです。たとえば、文字列が「MobileSafari_2011-09-10-155814_Jareds-iPhone.plist」の場合、「MobileSafari」という単語を除くすべてをプログラムで削除するにはどうすればよいですか

注:上記のプログラムでの用語を考えると、たとえば「MobileSafari」という単語を「Youtube」に変更したり、「Jared's-iPhone」という単語を「Angela's-iPhone」に変更したりしても、ソリューションは機能すると思います。

どんな助けでも大歓迎です!

4

5 に答える 5

2

常に最初のアンダースコアまで文字を抽出する必要があることを考えると; 次の方法を使用します。

NSArray *stringParts = [yourString componentsSeparatedByString:@"_"];

配列の最初のオブジェクトは、必要な抽出された部分になると思います。

于 2011-09-10T08:20:02.040 に答える
1

文字列の形式が常にそのようなものであることがわかっている場合は、簡単です。

here にcomponentsSeparatedByString:記載されているNSString を使用するだけです。

あなたの場合、これを行うことができます:

NSString *source = @"MobileSafari_2011-09-10-155814_Jareds-iPhone.plist";

NSArray *seperatedSubStrings = [source componentsSeparatedByString:@"_"];

NSString *result = [seperatedSubStrings objectAtIndex:0];

@"MobileSafari"インデックス 0、@"2011-09-10-155814"インデックス 1、および@"Jareds-iPhone.plist"インデックス 2 になります。

于 2011-09-10T08:20:00.557 に答える
1

テスト済みコード: 100% 動作します

NSString *inputString=@"MobileSafari_2011-09-10-155814_Jareds-iPhone.plist";

NSArray *array= [inputString componentsSeparatedByString:@"_"];

if ([array count]>0) {

    NSString *resultedString=[array objectAtIndex:0];


    NSLog(@" resultedString IS - %@",resultedString);



}

出力:

resultedString IS - MobileSafari
于 2011-09-10T08:20:34.567 に答える
1

これを試して :

NSString *strComplete = @"MobileSafari_2011-09-10-155814_Jareds-iPhone.plist";  
NSArray *arr = [strComplete componentsSeparatedByString:@"_"];  
NSString *str1 = [arr objectAtIndex:0];  
NSString *str2 = [arr objectAtIndex:1];  
NSString *str3 = [arr objectAtIndex:2]; 

str1は必要な文字列です。MobileSafariyoutube
に 変更しても動作します。

于 2011-09-10T08:22:32.563 に答える
0

したがって、切り捨てたい文字列の先頭を保持する NSString 変数が必要になります。その後、文字列と変数文字列の値を同時に変更する方法があります。たとえば、変数文字列が「Youtube」ではなく「MobileSafari」に変更された場合、可変文字列文字列は「MobileSafari_.....」から「YouTube_......」に変更されます。次に、可変文字列の長さを取得し、次のコードを使用して可変文字列を切り捨てます。

NSString *beginningOfTheStr;
.....
theMutableStr=[theMutableStr substringToIndex:[beginningOfTheStrlength-1]]; 

これが機能するかどうかを確認してください。

于 2011-09-10T08:19:56.050 に答える