Ярлыки в Objective-C для объединения строк NSS

Да. Это возможно.

Html


 
image

JS

 function showMyImage(fileInput) {
        var files = fileInput.files;
        for (var i = 0; i < files.length; i++) {           
            var file = files[i];
            var imageType = /image.*/;     
            if (!file.type.match(imageType)) {
                continue;
            }           
            var img=document.getElementById("thumbnil");            
            img.file = file;    
            var reader = new FileReader();
            reader.onload = (function(aImg) { 
                return function(e) { 
                    aImg.src = e.target.result; 
                }; 
            })(img);
            reader.readAsDataURL(file);
        }    
    }

Здесь вы можете получить Live Demo .

1091
задан Forge 7 January 2017 в 09:03
поделиться

7 ответов

Два ответа я не могу думать... ни об одном, особенно так же приятны как просто наличие оператора конкатенации.

Первый, используйте NSMutableString, который имеет appendString метод, устраняя часть необходимости в дополнительных временных строках.

116-секундный, используйте NSArray для конкатенации через componentsJoinedByString метод.

607
ответ дан Michael Fredrickson 7 January 2017 в 19:03
поделиться
  • 1
    Замечательный - видящий как, как мое реальное намерение состоит в том, чтобы быть в состоянии сделать что-то quick-n-dirty, это, в чем я нуждаюсь! – Nate W. 2 February 2011 в 08:07

Единственный способ сделать c = [a stringByAppendingString: b] немного короче состоит в том, чтобы использовать автоматическое заполнение приблизительно в эти st точка. + оператор является частью C, который не знает об объектах Objective C.

8
ответ дан 7 January 2017 в 19:03
поделиться

Опция:

[NSString stringWithFormat:@"%@/%@/%@", one, two, three];

Другая опция:

я предполагаю, что Вы не довольны несколькими, добавляет (a+b+c+d), в этом случае Вы могли сделать:

NSLog(@"%@", [Util append:one, @" ", two, nil]); // "one two"
NSLog(@"%@", [Util append:three, @"/", two, @"/", one, nil]); // three/two/one

использование чего-то как

+ (NSString *) append:(id) first, ...
{
    NSString * result = @"";
    id eachArg;
    va_list alist;
    if(first)
    {
        result = [result stringByAppendingString:first];
        va_start(alist, first);
        while (eachArg = va_arg(alist, id)) 
        result = [result stringByAppendingString:eachArg];
        va_end(alist);
    }
    return result;
}
1108
ответ дан Jimmy Schementi 7 January 2017 в 19:03
поделиться
  • 1
    Этот вопрос произошел потому что, когда у меня был набор, что я фильтровал использование, Где выражение, моя Платформа Объекта Сам Отслеживание Объектов не вели себя правильно. Я полагаю, что проблема не происходит из-за моего неверного толкования того, как C# обрабатывает ссылки, но проблему с отслеживанием быть выключенным после выполнения Где выражение. – Brandon 28 August 2010 в 00:06
NSString *label1 = @"Process Name: ";
NSString *label2 = @"Process Id: ";
NSString *processName = [[NSProcessInfo processInfo] processName];
NSString *processID = [NSString stringWithFormat:@"%d", [[NSProcessInfo processInfo] processIdentifier]];
NSString *testConcat = [NSString stringWithFormat:@"%@ %@ %@ %@", label1, processName, label2, processID];
7
ответ дан 19 December 2019 в 20:16
поделиться

Ярлык путем создания макроса AppendString (AS) ...

#define AS(A,B)    [(A) stringByAppendingString:(B)]
NSString *myString = @"This"; NSString *test = AS(myString,@" is just a test");

Примечание:

Если вы используете макрос, конечно, просто делайте это с переменными аргументами, см. Ответ EthanB.

26
ответ дан 19 December 2019 в 20:16
поделиться
NSString *label1 = @"Process Name: ";
NSString *label2 = @"Process Id: ";
NSString *processName = [[NSProcessInfo processInfo] processName];
NSString *processID = [NSString stringWithFormat:@"%d", [[NSProcessInfo processInfo] processIdentifier]];
NSString *testConcat = [NSString stringWithFormat:@"%@ %@ %@ %@", label1, processName, label2, processID];
13
ответ дан 19 December 2019 в 20:16
поделиться

Используйте этот способ:

NSString *string1, *string2, *result;

string1 = @"This is ";
string2 = @"my string.";

result = [result stringByAppendingString:string1];
result = [result stringByAppendingString:string2];

ИЛИ

result = [result stringByAppendingString:@"This is "];
result = [result stringByAppendingString:@"my string."];
31
ответ дан 19 December 2019 в 20:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: