2011-03-07 73 views

回答

2

我不知道你想在哪里放置空格,但尝试类似[a-z.-][^a-z .-],然后在每个比赛中的两个字符之间放一个空格。

+0

嘿耶利米,正则表达式的工作,但我无法添加在objC的空格插图中的字母。以下是我迄今为止: '的NSString * myText2 = @ “West4thStreet”;'' * NSString的regexString2 = @ “([AZ .-] [^ AZ .-])”;'' 为(的NSString *在[myText2 componentsMatchedByRegex:regexString2 capture:1L]中的match2 [' 'NSString * myString = [myText2 stringByReplacingOccurrencesOfString:match2 withString:@“”];' 'NSLog(@“Prints out:%@”,myString); ''//打印出来:Wes thStreet' '//打印出来:West4t treet' \t }'' – Aaron 2011-03-07 16:00:00

1

这应该工作,如果您的所有字符串匹配真正的例子格式:

([A-Z][a-z]+)(\d+[a-z]+)([A-Z][a-z]+) 

然后,您可以用空格分隔的组。

2

像这样的perl正则表达式替换会在大写字母或数字的每个之前放置一个空格。 (在这种情况下,你希望在字符串之前修整空格。)我假设你不想让它分手,例如:45th Street到4 5th Street

字母我不确定。

s/([A-Z]+|[0-9]+)/ \1/g 

我创建了一个模式不匹配行的开头我个人游:

s/([^\^])([A-Z]+|[0-9]+)/\1 \2/g 
0

另一种选择是不使用RegExKit并通过每个字符的字符串中使用代码回路并且每个大写字母后或第一小数点后插入空格..

NSMutableString *myText2 = [[NSMutableString alloc] initWithString:@"The1stTest"]; 
bool isNumber=false; 
for(int x=myText2.length-1;x>1;x--) 
{ 
    bool isUpperCase = [[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:[myText2 characterAtIndex:x]]; 
    bool isLowerCase = [[NSCharacterSet lowercaseLetterCharacterSet] characterIsMember:[myText2 characterAtIndex:x]]; 
    if([[NSCharacterSet decimalDigitCharacterSet] characterIsMember:[myText2 characterAtIndex:x]]) 
     isNumber = true; 
    if((isUpperCase || isLowerCase) && isNumber) 
    { 
      [myText2 insertString:@" " atIndex:x+1]; 
      isNumber=false; 
    } 
    if(isUpperCase) 
     [myText2 insertString:@" " atIndex:x]; 
} 
NSLog(@"%@",myText2); // Output: "The 1st Test" 
相关问题