Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Objective-C

Войти
Регистрация
Восстановить пароль
 
Sergey4590
1 / 1 / 0
Регистрация: 16.05.2012
Сообщений: 106
#1

Преобразование строки в массивы - Objective-C

18.07.2012, 11:51. Просмотров 1057. Ответов 2
Метки нет (Все метки)

Как пробежаться по строке NSString str=@"11+22*33"; и записать все числа в числовой массив,а все символы в символьный массив???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2012, 11:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразование строки в массивы (Objective-C):

Преобразование строки в символы - Objective-C
Дана строка 2+2. Как сделать чтобы символ 2 записался в переменную x, символ + записался в переменную z, символ 2 записался в...

Преобразование строки вида \uXXX в читаемый вид - Программирование iOS
Можно ли с помощью стандартных средств Cocoa Touch конвертить строку вида: {\t<article class=\"comment_wrap\" >\n\t\n<div...

Массивы и строки - Objective-C
Здравствуйте. Не подскажете, как поступить в таком случае. Есть массив array c номерами заказов находим его размерность и пускаем цикл. ...

Массивы и преобразование Фурье - MathCAD
Доброго времени суток! В задаче преобразование Фурье и картинку необходимо совместить. В файле: F1 необходимо преобразовать так чтобы...

Классы строк, массивы преобразование и т.д - C++
У меня в учебнике есть такой пример: #include <iostream> #include <string.h> using namespace std; // Rudimentary string...

Преобразование строки Из AnsiString в Char, и копировие этой строки. - C++ Builder
выходить ошибка при нажтии кнопки, хелп! void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString mystr = Edit1->Text; ...

2
zulkis
682 / 609 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
18.07.2012, 13:23 #2
Сравнивайте посимвольно с условием
C
1
2
3
4
5
6
char ch = /*ваш символ*/;
if(ch >= '0' && ch <= '9') {
/*пишите в числовой массив*/
} else {
/*Все остальное - не цифры*/
}
Если сами не напишите продолжение - через пару часов может накидаю чего, сейчас работа.

Добавлено через 1 час 19 минут
Мозг родил такую фигню:
Для выражений с беззнаковыми числами сработает.
Отталкивался от необходимости решения примера : @"2+2"
Будет время - улучшу до чегонибудь более серьезного
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#import <Foundation/Foundation.h>
 
@interface BasicIntMathExpression : NSObject {
    NSInteger _arg1;
    char _operator;
    NSInteger _arg2;
}
 
- (int)calculate;
- (id)initWithString:(NSString*)string;
 
@end
 
@implementation BasicIntMathExpression
 
bool isOperator(NSString *str) {
    if ([str length] > 1 || [str length] == 0) {
        return NO;
    }
    char ch = [str characterAtIndex:0];
    return (ch == '-' || ch == '+' || ch == '*' || ch == '/');
}
 
- (id)initWithString:(NSString*)string {
    self = [super init];
    if (self) {
        if (![self parse:string]) {
            @throw @"BasicMathExpression: Bad expression";
        } 
    }
    return self;
}
 
- (BOOL)parse:(NSString *)string {
    
    NSString *pattern = @"([0-9]+)(\\+|\\-|\\*|\\/)([0-9]+)";
    
    NSRegularExpression *regex = [NSRegularExpression 
                                  regularExpressionWithPattern:pattern
                                  options:NSRegularExpressionCaseInsensitive\
                                  error:nil];
    NSTextCheckingResult *match = [regex firstMatchInString:string options:0 range:NSMakeRange(0, string.length)];
    
    if (!match) {
        return NO;
    }
    
    for (int groupNumber=1; groupNumber<match.numberOfRanges; groupNumber+=1) {
        NSRange groupRange = [match rangeAtIndex:groupNumber];
        NSString *group = [string substringWithRange:groupRange];
        if (!isOperator(group)) {
            NSInteger *arg;
            if (groupNumber == 1) {
                arg = &_arg1;
            } else if (groupNumber == 3) {
                arg = &_arg2;
            }
            *arg = [group integerValue];
        } else {
            _operator = [group characterAtIndex:0];
        }
    }
    return YES;
}
 
- (int)calculate {
    if (_operator == '+') {
        return _arg1+_arg2;
    } else if (_operator == '-') {
        return _arg1-_arg2;
    } else if (_operator == '*') {
        return _arg1*_arg2;
    } else if (_operator == '/') {
        return _arg1/_arg2;
    }
    return 0;
}
 
@end
 
int main(int argc, const char * argv[])
{
    @autoreleasepool {
        BasicIntMathExpression *expr = [[BasicIntMathExpression alloc] initWithString:@"22+2"];
        int addition = [expr calculate];  
        expr = [[BasicIntMathExpression alloc] initWithString:@"22*2"];
        int multiplication = [expr calculate]; 
        expr = [[BasicIntMathExpression alloc] initWithString:@"22/2"];
        int division = [expr calculate]; 
        expr = [[BasicIntMathExpression alloc] initWithString:@"22-2"];
        int subtraction = [expr calculate]; 
        NSLog(@"Addition: %d, multiplication: %d, division: %d, subtraction: %d", 
              addition, multiplication, division, subtraction);
    }
    return 0;
}
0
antonio_12
Сообщений: n/a
18.07.2012, 13:31 #3
Вы какой массив имеете ввиду? NSArray или сhar[] ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2012, 13:31
Привет! Вот еще темы с ответами:

Двумерные массивы. Преобразование и построение матриц. - Pascal ABC
Вычислить сумму и число положительных элементов матрицы A, находящихся над главной диагональю. Программу надо написать в Pascal ABC....

Программки на массивы C++ часть 2 преобразование массива - C++
1. Дан массив размера N (N — четное число). Поменять местами первую и вторую половины массива. 2. Дан целочисленный массив размера...

Статические массивы,Динамические массивы,строки - Delphi
1)Создать двумерный массив A(N,M) целых положительных и отрицательных чисел с помощью функции Random. Найти произведение всех четных...

Преобразование строки - JavaScript
есть строка: var s=&quot;2010-10-19 18:14:21\n1\nВася Пупкин\n--\nПривет\n--\n2010-10-19 18:21:06\n1\nИван Иванов\n--\nПривет\\nКак...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru