为什么Xcode会在String的末尾添加空格?

时间:2013-03-17 18:12:30

标签: iphone ios string whitespace trim

我是iphone开发的小伙子,我对xcode有一个非常奇怪的问题。出于某种原因,它会在我的字符串末尾随机添加尾部空格。我的初始字符串值是从xml解析然后从那里尝试抓取字符串的最后一部分。由于这个随机的空白,这被证明是困难的。非常感谢任何帮助。

我的代码

//initial String 
<title>March 15 2013 Metals Commentary: Thomas Vitiello</title>

//Parsing
NSString *name = [[stories objectAtIndex: storyIndex] objectForKey: @"title"];
NSLog(@"myname: %@ %i", name, name.length);

//Log at this point
myname: March 15 PM Metals Commentary: Thomas Vitiello
         59

//Attempt at Removing Whitespace
NSArray *lastName=[name componentsSeparatedByString:@" "];
name = [[lastName objectAtIndex:6]stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSLog(@"myname: %@ %i", name, name.length);

//Log at this point
myname: Vitiello
9 //<--Should be 8, not 9.  This annoying whitespace is also particularly long, taking more than 1 character space, despite obviously being 1 character long.

3 个答案:

答案 0 :(得分:3)

您也可以尝试从字符串中删除换行符。您的字符串不仅包含空格,还包含换行符。

NSString *trimmmedContent = [contents stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

答案 1 :(得分:2)

请注意,您可能没有<title>March 15 2013 Metals Commentary: Thomas Vitiello</title>。你更有可能:

<title>March 15 2013 Metals Commentary: Thomas Vitiello
</title>

除非您使用选项来阻止它,否则XML解析器通常会在标记之间包含空格,因此您将获得该尾随换行符。

答案 2 :(得分:1)

您正在使用whiteSpaceCharacterSet,其描述如下:

  

返回仅包含内嵌空白字符空间(U + 0020)和制表符(U + 0009)的字符集。

但是从你自己的问题来看,你的字符串中似乎有一个换行符。请注意长度如何显示在与字符串不同的行上,即使格式字符串中没有换行符。换行符不是您正在修剪的字符之一。要解决此问题,请改用whitespaceAndNewlineCharacterSet