我想知道是否有人可能知道正则表达式会变成什么:
West4thStreet
进入这个:
西四街
我要在Objective-C中为字符串添加空格。
谢谢!
答案 0 :(得分:2)
我不知道你想把它放在空格的确切位置,但尝试[a-z.-][^a-z .-]
之类的东西,然后在每场比赛的两个角色之间加一个空格。
答案 1 :(得分:2)
这样的perl正则表达式替换会在每个大写字母或数字的组之前放置一个空格。 (在这种情况下,您也希望在字符串之前修剪空间。)我假设您不希望它分解,例如:45thStreet到4 5th Street
字母我不太确定。
s/([A-Z]+|[0-9]+)/ \1/g
为了个人娱乐,我创建了一个与行首不匹配的模式:
s/([^\^])([A-Z]+|[0-9]+)/\1 \2/g
答案 2 :(得分:1)
如果您的所有字符串都与您示例的格式完全匹配,那么这应该有效:
([A-Z][a-z]+)(\d+[a-z]+)([A-Z][a-z]+)
然后,您可以用空格分隔这些组。
答案 3 :(得分: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"