Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 目标C:在字符串中分隔单词并再次连接_Ios_Objective C_Tokenize - Fatal编程技术网

Ios 目标C:在字符串中分隔单词并再次连接

Ios 目标C:在字符串中分隔单词并再次连接,ios,objective-c,tokenize,Ios,Objective C,Tokenize,我有一个字符串说@“没有出现”。我想写一个函数,它将把这个字符串作为输入,并且应该输出@“没有出现”。最好的方法是什么?如何根据大写字母分隔字符串中的单词?感谢您的帮助。这里是NSString上的一个类别,它可以满足您的需要 @implementation NSString (SeparateCapitalizedWords) -(NSString*)stringBySeparatingCapitalizedWords { static NSRegularExpression * __

我有一个字符串说
@“没有出现”
。我想写一个函数,它将把这个字符串作为输入,并且应该输出
@“没有出现”
。最好的方法是什么?如何根据大写字母分隔字符串中的单词?感谢您的帮助。

这里是NSString上的一个类别,它可以满足您的需要

@implementation NSString (SeparateCapitalizedWords)

-(NSString*)stringBySeparatingCapitalizedWords
{
    static NSRegularExpression * __regex ;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        NSError * error = nil ;
        __regex = [ NSRegularExpression regularExpressionWithPattern:@"[\\p{Uppercase Letter}]" options:0 error:&error ] ;
        if ( error ) { @throw error ; }
    });

    NSString * result = [ __regex stringByReplacingMatchesInString:self options:0 range:(NSRange){ 1, self.length - 1 } withTemplate:@" $0" ] ;
    return result ;
}

@end

下面是NSString上的一个类别,它可以满足您的需要

@implementation NSString (SeparateCapitalizedWords)

-(NSString*)stringBySeparatingCapitalizedWords
{
    static NSRegularExpression * __regex ;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        NSError * error = nil ;
        __regex = [ NSRegularExpression regularExpressionWithPattern:@"[\\p{Uppercase Letter}]" options:0 error:&error ] ;
        if ( error ) { @throw error ; }
    });

    NSString * result = [ __regex stringByReplacingMatchesInString:self options:0 range:(NSRange){ 1, self.length - 1 } withTemplate:@" $0" ] ;
    return result ;
}

@end
试试这个

NSString *YourString=@"YouAreAGoodBoy";
NSString *outString;
NSString *string=@"";
NSUInteger length = [YourString length];
for (NSUInteger i = 0; i < length; i++)
{
    char c = [YourString characterAtIndex:i];
    if (i > 0 && c >= 65 && c <=90)
    {
        outString=[NSString stringWithFormat:@"%C", c];
        string = [NSString stringWithFormat:@"%@%@%@",string,@" ",outString];
    }
    else
    {
        outString=[NSString stringWithFormat:@"%C", c];
        string = [NSString stringWithFormat:@"%@%@",string,outString];

    }
}

NSLog(@"%@",string);
NSString*YourString=@“YouAreAGoodBoy”;
NSString*突出显示;
NSString*字符串=@“”;
NSU整数长度=[YourString长度];
对于(整数i=0;i0&&c>=65&&c试试这个

NSString *YourString=@"YouAreAGoodBoy";
NSString *outString;
NSString *string=@"";
NSUInteger length = [YourString length];
for (NSUInteger i = 0; i < length; i++)
{
    char c = [YourString characterAtIndex:i];
    if (i > 0 && c >= 65 && c <=90)
    {
        outString=[NSString stringWithFormat:@"%C", c];
        string = [NSString stringWithFormat:@"%@%@%@",string,@" ",outString];
    }
    else
    {
        outString=[NSString stringWithFormat:@"%C", c];
        string = [NSString stringWithFormat:@"%@%@",string,outString];

    }
}

NSLog(@"%@",string);
NSString*YourString=@“YouAreAGoodBoy”;
NSString*突出显示;
NSString*字符串=@“”;
NSU整数长度=[YourString长度];
对于(整数i=0;i0&&c>=65&&c
抄袭自,试试这个



复制自,尝试此

分离:,加入:你可以使用正则表达式。通过此链接@DarshanKunjadiya请停止这样做。你的答案非常明显。报告为不具建设性今天是什么情况?三个人只是复制链接到问题的已接受答案,没有任何属性。因此。。在DOESNotTurnUp的情况下,您想要什么?:)分离:,加入:你也可以使用正则表达式。通过这个链接@DarshanKunjadiya请停止这样做。你的答案非常明显。报告为非建设性的今天是什么?三个人只是复制链接问题的公认答案,没有任何归属。那么……你想在这种情况下做什么DOESNotTurnUp?:)这会给出结果“id ot urn p”。你是对的!我修复了它。我认为另一个正则表达式可能更好:任何小写字母后跟大写字母…但我更喜欢在生产中使用这种代码结构。这取决于你调用它的频率。+1用于使用
\p{uppercase letter}
它还应该包括非ASCII大写字母,如Ä、Ǣ、Я。好吧……我认为这个正则表达式比(a-z)(a-z)更好,因为这个正则表达式将处理“IAmNewHere”->“我是新来的”等。这将得到结果“id ot urn p”.你说得对!我修正了它。我认为另一个正则表达式可能更好:任何小写字母后跟大写字母…但我更喜欢这种代码结构。这取决于你调用它的频率。+1用于使用
\p{uppercase letter}
它还应该包括非ASCII大写字母,如Ä、Ǣ、Я。好吧……我认为这个正则表达式比(a-z)(a-z)更好,因为这个正则表达式将处理“IAmNewHere”->“我是新来的”例如,我喜欢这个答案,它是原创的。不过,有一个旁注值得一提;在ASCII字符中,65到90之间的字符表示大写字母,因此,
if
条件。“%c”仅适用于ASCII字符。您应该至少使用“%c”使其适用于UTF-16字符(ä,€,…)。还有一些大写字母不在ASCII范围内,如Ä、Ǣ、Я。@MartinR是的,欢迎您。感谢您的指导。我喜欢这个答案,它是原创的。不过有一个旁注值得一提;在ASCII字符中,65到90之间代表大写字母,因此出现了
if
条件。“%c”仅适用于ASCII字符。您应至少使用“%C”使其适用于UTF-16字符(ä、€、…)。并且有些大写字母不在ASCII范围内,如Ä、Ǣ、Я。@MartinR是的,欢迎使用。感谢您的指导。