【问题标题】:stringbyreplacingoccurrencesofstring not working for \ in iphonestringbyreplacingoccurrencesofstring 不适用于 iphone 中的 \
【发布时间】:2013-06-06 11:32:38
【问题描述】:

我正在尝试将代码中的“'”替换为“\'”,同时准备一个 json 字符串以将其传递给 .NET 服务器,但它无法正常工作...... 我的输入是“As'@k”,我需要得到“As\'@k”作为输出..我的代码在下面

NSString *myString=@"As'@k";
NSString *tempString=@"\'";
myString=[myString stringByReplacingOccurrencesOfString:@"'" withString:tempString];
NSLog(@"MYSTRING: %@",myString);

没有将输出作为 "As\'@k" 。为什么?

帮帮我..

【问题讨论】:

  • NSString *tempString=@"\\'";
  • 为什么不使用 NSJSONSerialization 而不是“手动”创建 JSON?这将自动处理所有转义和引用的东西。
  • @MartinR 呃,我从来没有读过 JSON 部分。您应该写下您的评论作为答案。

标签: ios objective-c nsstring


【解决方案1】:

由于\是用于转义的特殊字符,如果要反斜杠字符,则需要使用\\

NSString *tempString=@"\\'";

【讨论】:

    【解决方案2】:
       NSString *myString=@"As'@k";
       myString=[myString stringByReplacingOccurrencesOfString:@"'" withString:@"\\'"];
       NSLog(@"MYSTRING: %@",myString);
    

    【讨论】:

      【解决方案3】:

      你需要使用@"\\" 因为\是一个转义字符,所以你需要转义它,否则它会被忽略

      【讨论】:

        【解决方案4】:

        试试这个:

        NSString *myString=@"As'@k";
        NSString *tempString=@"\\'";   //because it is escape sequence character
        myString=[myString stringByReplacingOccurrencesOfString:@"'" withString:tempString];
        NSLog(@"MYSTRING: %@",myString);
        

        【讨论】:

          【解决方案5】:

          在您的项目中包含来自here的regexkit lite

          在项目中包含头文件

          #import "RegexKitLite.h"
          

          在您的代码中添加以下方法。

          -(NSString*)backSlashCorrectionForString:(NSString*)originalString
          {
             NSError *error = nil;
              NSRegularExpression *regex =
                  [NSRegularExpression 
            regularExpressionWithPattern:@"\s" 
                                 options:NSRegularExpressionCaseInsensitive error:&error];
              NSString *newString =
                  [regex stringByReplacingMatchesInString:originalString
                  options:0 range:NSMakeRange(0, [originalString length]) withTemplate:@"\\s"];
          
              //NSLog(@"New string: %@",newString);
              return newString;
          }
          

          【讨论】:

          • @manujmv:您的代码示例将空格替换为%20。这与所要求的完全不同。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-31
          • 2011-03-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多