[objective-c] NSString을 연결하기위한 Objective-C의 바로 가기

stringByAppendingString:Objective-C에서 ( ) 문자열 연결에 대한 단축키 또는 NSString일반적인 작업에 대한 단축키가 있습니까?

예를 들어 다음과 같이 만들고 싶습니다.

NSString *myString = @"This";
NSString *test = [myString stringByAppendingString:@" is just a test"];

더 같은 것 :

string myString = "This";
string test = myString + " is just a test";



답변

내가 생각할 수있는 두 가지 대답은 … 연결 연산자를 갖는 것만 큼 유쾌하지 않습니다.

먼저 메서드 NSMutableString가있는 appendString임시 문자열을 추가로 사용하지 않는를 사용하십시오.

둘째, 방법을 NSArray통해 연결하려면를 사용 하십시오 componentsJoinedByString.


답변

옵션:

[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;
}


답변

NSString 리터럴 이 2 개인 경우 다음 과 같이 할 수도 있습니다.

NSString *joinedFromLiterals = @"ONE " @"MILLION " @"YEARS " @"DUNGEON!!!";

#defines에 가입 할 때도 유용합니다.

#define STRINGA @"Also, I don't know "
#define STRINGB @"where food comes from."
#define JOINED STRINGA STRINGB

즐겨.


답변

나는이 게시물로 계속 돌아가서 항상 답변을 정렬하여 필요한만큼 많은 변수로 작동하는이 간단한 솔루션을 찾습니다.

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

예를 들면 다음과 같습니다.

NSString *urlForHttpGet = [NSString stringWithFormat:@"http://example.com/login/username/%@/userid/%i", userName, userId];


답변

메소드를 작성하십시오.

- (NSString *)strCat: (NSString *)one: (NSString *)two
{
    NSString *myString;
    myString = [NSString stringWithFormat:@"%@%@", one , two];
    return myString;
}

그런 다음 필요한 함수에 문자열 또는 텍스트 필드 또는이 함수의 반환 값을 설정하십시오.

또는 바로 가기를 만들려면 NSString을 C ++ 문자열로 변환 한 다음 ‘+’를 사용하십시오.


답변

콜론 종류의 특수 기호이지만, 글쎄, 방법 서명의 일부, exted에 가능하다 NSString이 추가 카테고리로를 비 관용적 문자열 연결의 스타일 :

[@"This " : @"feels " : @"almost like " : @"concatenation with operators"];

유용하다고 생각되는만큼 콜론으로 구분 된 인수를 정의 할 수 있습니다 … 😉

좋은 측정을 위해 종료 된 문자열 목록 concat:을 취하는 변수 인수 도 추가 했습니다 nil.

//  NSString+Concatenation.h

#import <Foundation/Foundation.h>

@interface NSString (Concatenation)

- (NSString *):(NSString *)a;
- (NSString *):(NSString *)a :(NSString *)b;
- (NSString *):(NSString *)a :(NSString *)b :(NSString *)c;
- (NSString *):(NSString *)a :(NSString *)b :(NSString *)c :(NSString *)d;

- (NSString *)concat:(NSString *)strings, ...;

@end

//  NSString+Concatenation.m

#import "NSString+Concatenation.h"

@implementation NSString (Concatenation)

- (NSString *):(NSString *)a { return [self stringByAppendingString:a];}
- (NSString *):(NSString *)a :(NSString *)b { return [[self:a]:b];}
- (NSString *):(NSString *)a :(NSString *)b :(NSString *)c
    { return [[[self:a]:b]:c]; }
- (NSString *):(NSString *)a :(NSString *)b :(NSString *)c :(NSString *)d
    { return [[[[self:a]:b]:c]:d];}

- (NSString *)concat:(NSString *)strings, ...
{
    va_list args;
    va_start(args, strings);

    NSString *s;
    NSString *con = [self stringByAppendingString:strings];

    while((s = va_arg(args, NSString *)))
        con = [con stringByAppendingString:s];

    va_end(args);
    return con;
}
@end

//  NSString+ConcatenationTest.h

#import <SenTestingKit/SenTestingKit.h>
#import "NSString+Concatenation.h"

@interface NSString_ConcatenationTest : SenTestCase

@end

//  NSString+ConcatenationTest.m

#import "NSString+ConcatenationTest.h"

@implementation NSString_ConcatenationTest

- (void)testSimpleConcatenation
{
    STAssertEqualObjects([@"a":@"b"], @"ab", nil);
    STAssertEqualObjects([@"a":@"b":@"c"], @"abc", nil);
    STAssertEqualObjects([@"a":@"b":@"c":@"d"], @"abcd", nil);
    STAssertEqualObjects([@"a":@"b":@"c":@"d":@"e"], @"abcde", nil);
    STAssertEqualObjects([@"this " : @"is " : @"string " : @"concatenation"],
     @"this is string concatenation", nil);
}

- (void)testVarArgConcatenation
{
    NSString *concatenation = [@"a" concat:@"b", nil];
    STAssertEqualObjects(concatenation, @"ab", nil);

    concatenation = [concatenation concat:@"c", @"d", concatenation, nil];
    STAssertEqualObjects(concatenation, @"abcdab", nil);
}


답변

stringByAppendingString:이 방법을 사용하십시오 :

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."];