2015-05-27 86 views
0

对不起,也许是一个新手问题。防止NSString转义内容

由于各种原因,我坚持一个奇特的字符串,看起来像这样:

NSString *myString = @"A\\314\\212A\\314\\210O\\314\\210.jpg"; 

我可以在一些忍者的方式去除双\\和强制的NSString明白字符串是Uniencoded和应读这样的

NSString *myString = @"A\314\212A\314\210O\314\210.jpg"; // Displays ÅÄÖ as expected 

我曾尝试不同的策略试图替换所有斜杠(“\”),但只要我添加了一个(“\”)的NSString又增加了一个逃跑的第一个。我在这里卡住了...

是否有可能阻止NSString逃离我的字符串?

UPDATE

我知道这是一个特例。读取读取用户驱动器上的文件的终端程序的输出。通过一个NSTask,我将输出捕获到一个NSString中,用于解析并将它分解成一个数组。只要没有非ASCII字符,它就会很好用。 HFS +编码的非ASCII字符与称为NFD的略有不同的Unicode编码。

当我捕捉效应初探,在AAO已经被编码内qoutes这样的:

file.jpg 
file2.jpg 
"A\314\212A\314\210O\314\210.jpg" 

当我创建的NSString,并与所捕获的效应初探时,它会通过的NSString第二次逃脱。

A\\314\\212A\\314\\210O\\314\\210.jpg 

我知道这不是最佳的,但现在我无法控制终端程序输出什么。通常,当使用此NFD编码创建NSString时,Objectiv-C会为您处理编码/解码。但是由于我有一个带有混合和双重转义内容的字符串,我有一个很难创建它的方法,并让NSString理解内容是用这种编码编码的。

基本上,我想这样的:

decodedString = [output stringByReplacingOccurrencesOfString:@"\\\\" 
                 withString:@"\\"]; 

但场面的NSString总是与另一个\转义\给你,让我想办法创建了“原始”的字符串NSString的干扰后面。

已经尝试过各种方法来尝试在NSString上强制执行Unicode编码,但它都归结为NSString始终捕获和转义\。

任何提示och points赞赏!

+0

1.你需要扩大这个问题,目前还不清楚你在问什么。提供更多上下文。 2.什么是“NSString添加另一个逃避第一个”的意思,请解释。 – zaph

+0

你总是可以使用unicode字符:'NSString * myString = @“ÅÄÖ”;'。它也可以用组合的UTF-8表示为:'myString = @“\ xc3 \ x85 \ xc3 \ x84 \ xc3 \ x96.jpg”;' – zaph

+2

'myString'的值从何而来?它是硬编码吗?从互联网收到?还有别的吗?提供更多相关的代码。 – rmaddy

回答

0

我没有找到任何解决这个问题的方法,而不是绕着另一个方向去改变终端程序的输出,而不是用这种方式对它进行编码。