2011-03-07 71 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" 
相關問題