【问题标题】:Why do not want to work? There are options?为什么不想工作?有选择吗?
【发布时间】:2015-07-28 11:58:17
【问题描述】:
NSString *firstNameLastName =@"DavidMatvienko";
NSArray *listItems = [firstNameLastName componentsSeparatedByString:@"David , Matvienko"];
NSLog(@"listItems %@", listItems);

应该在 NSLog 中总结:David Matvienko;大卫;马特维延科。为什么不想工作?有选择吗?

【问题讨论】:

  • str1 = @“David” str2 = @“Matvienko” str3 = @“David Matvienko”
  • 您确定输入正确吗?您要从中提取名字和姓氏的input string 是什么!?是“DavidMatvienko”还是“David Matvienko”还是“David, Matvienko”???
  • @DavidDavid str3 =[NSString stringWithFormat:@"%@ %@", str1,str2]; NSString class reference这个链接对你有用
  • @Banto25 是的,我需要来自 DavidMatvienko David Matvienko。知道的请给个提示方法..
  • @DavidDavid 你应该使用正则表达式然后相应地拆分然后合并

标签: ios objective-c xcode cocoa nsstring


【解决方案1】:

试试这个:

NSString *firstNameLastName =@"David, Matvienko";  
NSArray *listItems = [firstNameLastName componentsSeparatedByString:@", "];
NSLog(@"listItems %@", listItems);

你混合了参数。

componentsSeparatedByString 将根据作为参数提供的内容拆分字符串(此处为 firstNameLastName)。所以它按设计工作。如果这不是您想要的,您应该尝试让您的问题更清楚。

【讨论】:

  • 我需要创建一个字符串合并。也许我选择的不是真正的测试方法?
  • 是的,我需要 DavidMatvienko David Matvienko 做的。知道的请给个提示方法..
  • 你的意思是你有@"DavidMatvienko" 并且想要从这两个字符串@"David" 和@"Matvienko"?
【解决方案2】:

你正在寻找的代码是这样的

NSString *firstNameLastName =@"David Matvienko";
NSArray *listItems = [firstNameLastName componentsSeparatedByString:@" "];
NSLog(@"listItems %@", listItems);

这将输出:

listItems (
 David
 Matvienko
)

基本上componentsSeparatedByString: 方法将根据分隔符拆分给定的字符串

【讨论】:

  • 我需要创建一个字符串合并。也许我选择的不是真正的测试方法?
  • @DavidDavid 你能用输入和输出的例子解释你的要求吗
  • 是的,我需要来自 DavidMatvienko David Matvienko。知道的请给个提示方法..
  • 怎么做?我有点不明白
【解决方案3】:

您完全误解了 componentsSeparatedByString 的作用。

componentsSeparatedByString 的参数是字符串组件之间的分隔符。例如

[@"Jim,Joe,James" componentsSeparatedByString:@","]

发现Jim和Joe之间有一个逗号,Joe和James之间有一个逗号,所以结果是一个数组@[@"Jim", @"Joe", @"James"]。

您正在使用 @"David , Matvienko" 作为分隔符字符串。如果您的字符串是@"1David, Matvienko2David, Matvienko3",那么该方法会发现@"1" 和@"2" 之间以及@"2" 和@"3" 之间有@"David, Matvienko",所以结果将是@[@"1", @"2", @"3"]。

由于您的字符串不包含该子字符串,您将获得一个包含原始字符串的数组。

谁让你把@"DavidMatvienko" 分成名字和姓氏是相当愚蠢的。尝试将“DeForestKelley”和“LeonardDeCaprio”拆分为名字和姓氏。信息已丢失,您无法恢复。

【讨论】:

    【解决方案4】:
    NSString* stringToTest = @"DavidMatvienko";
    NSMutableString* resultString = [NSMutableString stringWithString:stringToTest];
    NSCharacterSet *upperCaseSet = [NSCharacterSet uppercaseLetterCharacterSet];
    NSRange upperCaseRange = [stringToTest rangeOfCharacterFromSet: upperCaseSet options:NSBackwardsSearch];
    if (upperCaseRange.location != NSNotFound) {
        [resultString insertString:@" " atIndex:upperCaseRange.location]; }
    NSLog(@"%@", resultString);
    

    【讨论】:

    • 这将失败,名称为“GeorgeMcFly”。
    猜你喜欢
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 2016-09-13
    • 2012-03-05
    相关资源
    最近更新 更多