3

文字列から数値を抽出することは可能ですか。たとえば、次の文字列があります。

my name is shishir and my number is 98890876478

98890876478上記の文字列から抽出できますか?

または、私の文字列が次の場合:

my name is shishir and my number is XXX98890876478XXX

この状態でXXXの間にある「98890876478」を抽出できます。

これを行うことは可能ですか?

サーバーから上記のような形式のメッセージを受け取りました。さらに操作を行うには数値が必要です

編集:

使用しようとしているコードは次のとおりです。

NSString *logString = [NSString stringWithFormat:@"%@",theXML]; 
NSString *digits = [logString stringByTrimmingCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]; 
NSLog(@"Message id: %i", [digits intValue]);

出力:

2010-05-21 16:37:07.092 sms[5311:207] OK: message-ID XXX110103468XXX
2010-05-21 16:37:07.851 sms[5311:207] Message id: 2

サイズ== 2なので、2を返すと思います。「XXX」の間の値を取得する必要があります。

4

5 に答える 5

7

必要なのは NSScanner だと思います。これにより、文字列の一部を取り出すことができます。

例えば

int n;
NSScanner * scanner = [[NSScanner alloc] initWithString:@"Your string 1234"];
[scanner scanInt:&n];
于 2010-05-21T10:35:05.487 に答える
1

自己完結型ソリューション:

+ (NSString *)extractNumberFromText:(NSString *)text
{
  NSCharacterSet *nonDigitCharacterSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
  return [[text componentsSeparatedByCharactersInSet:nonDigitCharacterSet] componentsJoinedByString:@""];
}

次のケースを処理します。

  • @"1234"@"1234"
  • @"001234"@"001234"
  • @"leading text get removed 001234"@"001234"
  • @"001234 trailing text gets removed"@"001234"
  • @"a0b0c1d2e3f4"@"001234"

お役に立てれば!

于 2014-12-04T23:19:20.593 に答える
1

これには正規表現を使用できます\d+。つまり、ゼロ以外の数字のシーケンスに一致させたい場合。

関連する質問


それ以外の場合は、文字列内の文字を手動で調べて、連続する数字のシーケンスを見つけることができます。

于 2010-05-21T10:30:28.713 に答える
0

stringByTrimmingCharactersInSet は、文字列の末尾または先頭の文字を削除するだけです。

例: "abc 10 cd" -> 10 (動作します)

例: "abc 10 a 1" -> "10 a 1" (動作しません)

正規表現を使用する方が良い考えのようです。

iphone sdk - 文字列から 0 ~ 9 以外のすべての文字を削除する

編集:

受け入れられた回答ではなく、50票を超える回答を確認してください

NSString * number = @"(555) 555-555 Office";
NSString * strippedNumber = [number stringByReplacingOccurrencesOfString:@"[^0-9]" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, [number length])];
于 2014-02-07T05:27:19.900 に答える
0

これは私が最終的にやったものです

NSString *newString = [[theXML componentsSeparatedByCharactersInSet: [[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""];
----------------------------------------

NSString *newStr = [newString substringWithRange:NSMakeRange(1, [newString length]-1)];
----------------------------------------

そして、私は終わりました。

于 2010-05-24T13:30:16.577 に答える