修剪字符之间的空格

Posted

技术标签:

【中文标题】修剪字符之间的空格【英文标题】:Trim whitespace in between characters 【发布时间】:2013-10-03 07:21:04 【问题描述】:

我刚刚更新到 ios 7 sdk,我想修剪/替换字符串字符之间的空格,从而从 ABAddressBook 中取出数字。

我尝试使用下面的替换“”与“”代码,但此代码似乎在 ios7 sdk 中不起作用,顺便说一句,它在 ios 6 sdk 中运行良好。

NSString *TrimmedNumberField = [self.numberField.text 
stringByReplacingOccurrencesOfString:@" " withString:@""];

还有其他方法可以在 IOS 7 中实现吗?

编辑:

这是我正在尝试的电话号码类型。

输入:"+65 12 345 6789"

我从 NSLog 得到的输出是" 12 345 6789"

我意识到,当我添加到 NSDictionary 并在 NSLog 中查看时,它似乎包含 \u00a0 的 unix 代码表示,类似于“中间的点”,不等于句号。

提前致谢。

【问题讨论】:

我目前无法测试,但我不明白为什么这在 iOS 6 和 iOS 7 中的工作方式会有所不同。请给出输入字符串、实际输出和预期输出的具体示例. @MartinR 我已经添加了从 NSLog 获得的输入和输出。 我目前无法使用 Mac,因此无法测试任何 Objective-C 代码,但我真的想知道您的代码应该如何将“+65 12 345 6789”转换为“12 345 6789” "。 我同意 Martin R 的观点,在这种情况下,最好将问题简化为测试:声明一个字符串变量,分配测试字符串,进行转换,然后验证结果。如果没问题,那么您的问题出在其他地方。 嗨@Monolo,谢谢。你是对的。我创建了一个字符串变量并进行了替换。它工作得很好。但是当我将从电话簿中获得的电话号码返回到文本字段时就会发生这种情况,当我即将进行转换时遇到了这个问题。 【参考方案1】:

从here找到答案

phoneNumber = [phoneNumber stringByReplacingOccurencesOfString:@"." withString:@""];

// 其中@"."是通过键入 Option+ 空格键

创建的

号码是从 ABAddressbook 中提取的。

【讨论】:

【参考方案2】:

只要有空格,你就可以遍历字符串并删除空格

NSString *someString = @"A string with   multiple spaces and    other whitespace.";

NSMutableString *mutableCopy = [someString mutableCopy];

// get first occurance of whitespace
NSRange range = [mutableCopy rangeOfCharacterFromSet:[NSCharacterSet whitespaceCharacterSet]];

// If there is a match for the whitespace ...
while (range.location != NSNotFound) 
    // ... delete it
    [mutableCopy deleteCharactersInRange:range];
    // and get the next whitespace
    range = [mutableCopy rangeOfCharacterFromSet:[NSCharacterSet whitespaceCharacterSet]];


// no more whitespace. You can get back to an immutable string
someString = [mutableCopy copy];

上面字符串的结果是Astringwithmultiplespacesandotherwhitespace.

【讨论】:

【参考方案3】:

试试这个:

NSString *str = @"   untrimmed   string   ";
NSString *trimmed = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

【讨论】:

添加评论为什么你不赞成我的回答我需要知道原因...? stringByTrimmingCharactersInSet 仅删除字符串开头和结尾的字符。【参考方案4】:

试试这个

[yourString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

whitespaceCharacterSet Apple Documentation for iOS 说

返回一个以二进制格式编码接收者的 NSData 对象。

(NSData *)位图表示 返回值 以二进制格式编码接收器的 NSData 对象。

讨论 此格式适用于保存到文件或以其他方式传输或存档。

字符集的原始位图表示是一个 2^16 位(即 8192 字节)的字节数组。位置 n 的位值表示字符集中存在十进制 Unicode 值 n 的字符。要测试原始位图表示中是否存在具有十进制 Unicode 值 n 的字符,请使用如下表达式:

所以试试这个

NSString *testString = @"  Eek! There are leading and trailing spaces  ";
NSString *trimmedString = [testString stringByTrimmingCharactersInSet:
                             [NSCharacterSet whitespaceAndNewlineCharacterSet]];

【讨论】:

stringByTrimmingCharactersInSet 仅删除字符串开头和结尾的字符。 我认为 NSArray* words = [yourString componentsSeparatedByCharactersInSet :[NSCharacterSet whitespaceCharacterSet]]; NSString* nospacestring = [单词 componentsJoinedByString:@""];可能工作 好像把whitespaceCharacterSet和bitmapRepresentation的文档搞混了。

以上是关于修剪字符之间的空格的主要内容,如果未能解决你的问题,请参考以下文章

修剪功能将内存大小减半以删除空格?

修剪字符串中的多个字符

JavaScript 使用正则表达式修剪字符串空格

使用正则表达式修剪字符串空格

可以将 Jackson 配置为从所有字符串属性中修剪前导/尾随空格吗?

ActionScript 3 AS3从字符串的开头和结尾修剪空格