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