从字符串中删除字符和之后的所有内容

Posted

技术标签:

【中文标题】从字符串中删除字符和之后的所有内容【英文标题】:Remove Characters and Everything After from String 【发布时间】:2012-04-27 00:23:00 【问题描述】:

我知道替换字符串的字符串,但这只有在我确切知道要删除的内容时才有效。

如果我有如下字符串:

“hi-there-this-is-a-test&feature=hi-there”

如何删除“&feature”以及之后的所有内容?

任何帮助将不胜感激。提前致谢!

编辑:如果绝对需要使用 REGEX,有人可以告诉我如何使用它吗?我知道它是 10.7 以后的版本,但我对此很好。更好的是,字符串修剪或使用 NSScanner 的示例?

再次感谢大家。

编辑:下面发布的解决方案是正确的,但导致我崩溃。这就是我解决问题的方法:

NSString *newString = [[oldString componentsSeparatedByString: @"&feature="] objectAtIndex:0];

【问题讨论】:

虽然从技术上讲是一种解决方案,但该解决方案所做的工作比它需要的要多(即创建一个数组)。您应该回到 rdelmar 的解决方案并调查导致它崩溃的原因,因为您可能仍在这样做,它会导致其他问题。 非常感谢您的帮助,但相信我,我已经仔细查看了,我刚刚创建了一个字符串,用 URL 填充,转换它,修剪它,然后使用这个解决方案崩溃。我无法弄清楚它崩溃的原因。 正如我所说,你应该问一个问题。从遇到的每一次崩溃中运行,您都无法学到任何有用的东西;当你遇到车祸时,你应该正面解决它并从你发现的东西中学习。 为什么不把导致崩溃的代码贴出来,让我们看看。 【参考方案1】:

不用 REGEX 也可以这样:

NSString *string = @"hi-there-this-is-a-test&feature=hi-there";
    NSRange range = [string rangeOfString:@"&feature"];
    NSString *shortString = [string substringToIndex:range.location];

【讨论】:

@Cristian:那你做错了。这是正确的解决方案。您应该发布有关崩溃的单独问题。 好的,谢谢,我真的不明白为什么它会崩溃,我的字符串上的 NSLog 显示正确的输出,但是如果我使用这个解决方案它会崩溃.. 奇怪 放这个方法也崩溃了【参考方案2】:

查找模式匹配,也就是正则表达式。

哦,哇,TIL 没有在 Objective-C Cocoa 中执行正则表达式的内置方法?根据Regular expressions in an Objective-C Cocoa application

无论如何,该问题中提到了库。

【讨论】:

没有内置方式吗?像 'stringByReplacingOccurrencesOfString() 但之后删除所有内容? 好吧,您可以使用自己的函数围绕它进行编码,该函数执行内置调用以获取匹配字符串的位置,然后在该点修剪字符串。如果你有一个足够简单的环境,那就没问题了。但是一旦您的项目发展壮大,那么您将被剪切粘贴共享代码......为什么不使用强大的库? 这是一个小项目,这段代码将包含在循环函数中,我只需要删除一个特定的事件,即删除“&feature”以及之后的所有内容,这赢了不改变。如果你能提供一个找到它然后修剪的例子,我将非常感激! Cocoa 在 Lion 中获得了对正则表达式的支持。 Cocoa Touch 在 ios 4 中得到了它。

以上是关于从字符串中删除字符和之后的所有内容的主要内容,如果未能解决你的问题,请参考以下文章

在字符(以及字符)之后删除所有内容

如何从字符串中删除除字母、数字、空格、感叹号和问号之外的所有内容?

删除最后一个字母之后的所有字符

从 PHP 中的字符串中删除除字母数字字符之外的所有内容

从字符串中删除 html 图像标签和介于两者之间的所有内容

从 Python3.3 中的字符串中删除除字母和空格之外的所有内容