【问题标题】:Replace double quote(") with escape double quote(\") is not working in iOS 11将双引号(“)替换为转义双引号(\”)在 iOS 11 中不起作用
【发布时间】:2017-11-08 07:06:15
【问题描述】:

我正在尝试用转义双引号 (\") 替换双引号 ("),但它无法在 iOS 11 中替换。在 iOS 10 之前同样可以正常工作。我使用的是 Xcode 9.1。

例子:

从搜索栏输入:“课程”

NSString *modifedSearchString = [searchBar.text stringByReplacingOccurrencesOfString:@"\"" withString:@"\\""\""];

预期输出:\"Course\"(一直工作到 iOS 10)

iOS 11 中的 O/p:“课程”

有人遇到同样的问题吗?

提前致谢!!

【问题讨论】:

  • 您的代码看起来不错,我在 XCode 9.1 中装有 iOS 11 的 iPhone X 上进行了尝试。到控制台的输出按预期正确。
  • 考虑到反斜杠是(虚拟)转义字符并且通常是自动添加的。
  • @Baig.. 问题是当我从搜索栏中输入双引号中的字符串时。
  • 当你 println(searchBar.text) 时,输出什么?
  • 如何检查输出?请注意,一些调试信息会将反斜杠添加到输出中,即使它们实际上并不存在于字符串中。如果要包含反斜杠,则需要将其加倍。所以ˋ\"`实际上应该写成\\\"

标签: ios objective-c ios10 ios11 xcode9


【解决方案1】:

iOS 11 在键盘设置中添加了“智能标点符号”(见截图)。

这意味着当输入“Course”时,它会将其转换为“Course”。 '"' 被替换为 '“' 和 '”' 字符串。与默认引号相比,它们是不同的引号(智能引号)。

因此,一种选择可能是也将 '“' 和 '”' 替换为 '\"'。

【讨论】:

    【解决方案2】:

    @KishanLal 试试这个...

    NSString *str = [NSString stringWithFormat:@"\"Course\""];
        NSLog(@"str = %@", str); //str = "Course"
        NSString *modifedSearchString = [str stringByReplacingOccurrencesOfString:@"\"" withString:@"\\""\""];
        NSLog(@"output = %@", modifedSearchString); //output = \"Course\"
    

    【讨论】:

    • 我正在从搜索输入中获取双引号字符串。无法硬编码双重代码字符串。反斜杠是虚拟转义字符,从搜索栏输入时应考虑。相同的代码在 iOS 10 之前都可以使用。
    猜你喜欢
    • 1970-01-01
    • 2015-07-31
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多