【问题标题】:String Manipulation in Objective-CObjective-C 中的字符串操作
【发布时间】:2009-11-22 09:05:14
【问题描述】:

掌握了如何在 Objective-C 中获取和写入变量,现在是时候学习如何用它们做一些更有用的事情了!现在,我主要想弄清楚字符串操作是如何工作的。特别是,我正在寻找以下功能:

  • 串联
  • 查找字符串的长度(尤其是多字节/UTF-8 字符串;我在东亚语言方面做了很多工作)
  • 仅提取字符串的一部分(例如,“abcfoobarxyz”中的“foobar”)
  • 在字符串中搜索(参见上面的示例)
  • 更改大小写(大写、小写、标题,如果操作简单的话)
  • 爆炸/内爆字符串(例如,从逗号分隔的列表中创建和获取信息)
  • 在字符串中查找/替换
  • 任何其他可能可用的通常有用的字符串函数

【问题讨论】:

  • 阅读文档?

标签: objective-c string


【解决方案1】:

示例: 串联:

- (NSString*) concatenateString:(NSString*)stringA withString:(NSString*)stringB
{  
    NSString *finalString = [NSString stringWithFormat:@"%@%@", stringA,
                                                       stringB];
    return finalString;
}
// The advantage of this method is that it is simple to put text between the
// two strings (e.g. Put a "-" replace %@%@ by %@ - %@ and that will put a
// dash between stringA and stringB

字符串长度:

- (int) stringLength:(NSString*)string
{
    return [string length];
    //Not sure for east-asian languages, but works fine usually
}

从字符串中删除文本:

- (NSString*)remove:(NSString*)textToRemove fromString:(NSString*)input
{
   return [input stringByReplacingOccurrencesOfString:textToRemove
                                           withString:@""];
}

大写/小写/大写:

- (NSString*)uppercase:(NSString*)stringToUppercase
{
   return [stringToUppercase uppercaseString];
}

- (NSString*)lowercase:(NSString*)stringToLowercase
{
   return [stringToLowercase lowercaseString];
}

- (NSString*)titlecase:(NSString*)stringToTitleCase
{
   return [stringToTitleCase capitalizedString];
}

查找/替换

- (NSString*)findInString:(NSString*)string
        replaceWithString:(NSString*)stringToReplaceWith
{
   return [input stringByReplacingOccurrencesOfString:string
                                           withString:stringToReplaceWith];
}

我希望这会有所帮助!

PS:别忘了查看文档,Google 是您的朋友。祝你好运

【讨论】:

  • 非常感谢!我一直在研究文档,但有时对我来说相当困惑,而剖析代码摘录以了解它通常是如何工作的并不是问题。
  • 没问题。请记住,这些是功能(单独的)。所以你可以 - 并且应该 - 在代码中直接使用括号(比如如果你有一个 hello world 程序:- (IBAction)helloButtonClicked:(id)sender { [textField setStringValue:[@"HELLO WORLD" lowercaseString]]; } 玩得开心
  • 太棒了!没错,Google 是我的朋友——它可以帮助我在 StackOverflow 上查找内容!
  • 对于标题大小写检查这个 SO 答案 stackoverflow.com/a/2347819/463478 (NSString *titleCaseString = [yourString capitalizedString])
  • 连接滥用格式字符串,你应该只是return [stringA stringByAppendingString:stringB];
【解决方案2】:

在 Xcode 中,按 CMD-SHIFT-D 并搜索 NSString.h、NSMutableString 和/或 NSScanner

打开这些文件,看看你可以用 NSStrings 做什么。这应该会告诉您有哪些功能。

顺便说一句,这应该成为你的第二天性,因为你会经常使用它来找出函数和/或委托是什么。

【讨论】:

    【解决方案3】:

    这是一个“标题案例”例程:

    - (NSString *) stringToTitleCase: (NSString *) inString
    {
        NSString *firstLetter = [inString substringWithRange: NSMakeRange(0, 1)];
        NSString *theRest = [inString substringWithRange: NSMakeRange(1, [inString length]-1)];
    
        return [NSString stringWithFormat: @"%@%@", [firstLetter uppercaseString], theRest];
    }
    

    【讨论】:

    • 是的,但是 titlecase 应该使每个单词的第一个字母大写,所以你必须分析字符串中的单独单词等
    • 在这种情况下你可以使用 NSString capitalizedString
    【解决方案4】:
    - (NSString *) stringToTitleCase: (NSString *) inString
    {
        NSString *firstLetter = [inString substringWithRange: NSMakeRange(0, 1)];
        NSString *theRest = [inString substringWithRange: NSMakeRange(1, [inString length]-1)];
    
        return [NSString stringWithFormat: @"%@%@", [firstLetter uppercaseString], theRest];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多