字符串操作 - 还有其他有效的方法吗?

2023-12-05

我有一个要求,我需要在给定的字符串变量中插入转义序列,无论是在哪里单引号出现 (')。我尝试使用split方法以及字符串分词器,没有一个适合我。所以我开发了下面提到的逻辑。在某些情况下它也会失败

谁能给我提供一种最简单的方法来实现这样的要求?

public static String quotesMessage(String message){
    String newMessage="";
    while(message.length()>0){
        if(message.indexOf("'")==0){
            if(!StringUtils.isEmpty(message.substring(0))){
                message = message.substring(1);
            }
        }else{
            if(message.indexOf("'")!= -1){
                newMessage=newMessage+message.substring(0,message.indexOf("'"))+"\\'";
                message=message.substring(message.indexOf("'"));
            }else{
                newMessage=newMessage+message;
                message="";
            }
        }
    }
    return newMessage;
}

这个怎么样:

newMessage.replace("'", "\\'")

还是我误解了你的要求?


And about the discussions in comments: yes, both replace() and replaceAll() use Regular Expressions use compiled Patterns internally (but replace() uses the flag Pattern.LITERAL), interpreting the pattern as literal value, whereas replaceAll() (and replaceFirst()) both use Regular Expressions. However, the compiled patterns are absolutely identical (in this case). Try it yourself:

Pattern literal = Pattern.compile("'",Pattern.LITERAL);
Pattern regular = Pattern.compile("'");

在这些赋值之后添加一个断点,并仔细查看这两个编译模式。您会发现它们的所有字段值都是相同的,因此至少在这种情况下,不会在性能方面产生任何差异。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字符串操作 - 还有其他有效的方法吗? 的相关文章

随机推荐

  • 如何使用非标准代码页读取 EBCDIC 数据,而不弄乱数字?

    这是给老手的 我正在从大型机 DB2 表中读取二进制转储 该表具有 varchar char smallint integer 和 float 列 有趣的是 DB2 使用代码页 424 希伯来语 我需要我的代码独立于代码页 因此 我使用 S
  • 如何在R中动态更改图表标题?

    这是一个使用的示例mtcars按变量分割成单独的图 我创建的是一个散点图vs and mpg通过将数据集拆分为cyl 首先创建一个空列表 然后我用了lapply循环遍历 cyl 4 6 8 的值 然后filter按该值的数据 之后 我绘制了
  • 如何在github上发布.php页面而不是.html来演示一些php内容?

    我正在看以下演示 http blueimp github com jQuery File Upload 据我在演示中的理解 php 文件是从 github 提供的 这意味着 php 内容可以从 github 提供 运行 我了解通过此链接从
  • iPhone - 为什么编译器在构建 ARM 架构时找不到某些包含内容?

    我正在尝试在 iPhone 项目中使用 C 库 我对 iPhone 开发非常陌生 我的图书馆 我已经奋斗了好几天 试图将此库构建成一个静态库 我可以将其用于模拟器 i386 和 ARM7 使用库的包含配置和 makefile 我可以毫无问题
  • 如何使用 Visual Studio 2015 为网站项目配置不同的虚拟目录

    我有一个在 VS 2012 中开发的 c 网站类型项目 我想使用 VS 2015 但无法指定与默认根目录 不同的虚拟目录 在 vs 2012 中 sln 文件中有以下几行 VWDPort 59903 VWDDynamicPort true
  • 使用正则表达式搜索元胞数组

    我经常发现自己尝试搜索元胞数组 就像我想使用 sql 查询搜索数据库一样 在这种情况下 我有许多军事基地 bases shp bases shaperead us military bases shp 然后我想过滤形状文件以获得空军基地 例
  • 使输入拇指比其他拇指更大

    这里的 React 开发人员试图通过编码来学习 这里我有一个滑块 我试图使拇指变大 但它不会比它所在的输入更大 正如你所看到的 如果我使拇指变大 它不会完全显示它 关于如何使它看起来像我想要的有什么建议吗 英语不是我的母语 所以可能会有错误
  • C#中如何获取变量的数据类型?

    如何找出某个变量保存的数据类型 例如 int string char 等 我现在有这样的事情 private static void Main var someone new Person Console WriteLine someone
  • 反应选择的默认值,当我想发布具有空白页面输出的数据时,复选框不起作用

    我无法将获取的数据作为默认值放入下拉列表 反应选择 和复选框中 我有显示的下拉菜单 好 但默认值dishId 1 is Medium 所以我应该看到在我的下拉列表中已经选择了Medium 但事实并非如此 评论的问题相同 export def
  • DllImport 与 LoadLibrary,最好的方法是什么?

    我通常在 c NET 中使用 Win32 API 但不要在一份申请中声明所有内容 有时通常使用 user32 有时使用 gdi32 我认为当我声明所有 api 函数时 它们会使用大量内存 在 NET 中使用 API 的最佳方式是什么 当您编
  • Cordova - 内部超链接始终在 Safari 中打开

    我对 Cordova 很陌生 所以我可能不完全理解它的用途 让我从我总体上想要实现的目标开始 我们有一个支持移动设备的 asp net 网站 我基本上只是想用 iPhone 应用程序来包装它 当然 该站点在 IIS 服务器上运行 因此我只需
  • Java中捕获异常的顺序

    如果我没记错的话 应该首先捕获异常的子类 但是必须捕获任何 RuntimeException 和一个具体的检查异常 这应该首先捕获 try catch RuntimeException e catch IOException e 这个顺序正
  • Java 8 混乱 -> String::compareToIgnoreCase

    有人可以帮助我理解以下内容吗 This works fine List list Arrays asList a b A B str sort String compareToIgnoreCase 我可以将上述方法引用分配给任何变量吗 ho
  • 如何从存根函数参数获取属性?

    我有一项服务 它应该创建一个电子邮件类对象并将其传递给第三类 电子邮件发送者 我想检查由该函数生成的电子邮件正文 服务 php class Service var EmailService protected emailService pu
  • 用于对象导出和类型的 def 文件

    好的 我们有了一个 Node 模块string similaritywho 导出两个这样的函数 参见 https github com aceakash string similarity blob master compare strin
  • 如何在 VS Code linter 中更改 pylint 消息模板?

    我的目标是更改 VS Code 中 linter 消息的 pylint 消息模板 我使用的是 Don Jayamanne 提供的 VS Code 标准 Python 扩展 该扩展现在由 Microsoft 直接维护 默认情况下 消息格式如下
  • 根据布尔掩码将值从一个 numpy 矩阵复制到另一个

    作为一个简单的例子 我有以下内容 import numpy as np a np matrix 0 34 0 44 0 21 0 51 a max np matrix 0 35 0 40 0 20 0 50 我想应用一个转换 其中 a 中大
  • CSS中有什么尖锐的样式吗?

    我想使用 Photoshop 中的 style sharp 在我的 css 中设置一些字体的样式 有谁知道路吗 Photoshop 使用自定义字体渲染引擎 您无法使用 CSS 来模拟该引擎 此外 每个平台都有自己的渲染引擎 CSS无法控制
  • 使用来自 C# 的参数运行控制台应用程序 - GUI 连接建议

    警告 这是一个 C n00b 问题 尝试学习一些 C 同时让我经常运行的控制台应用程序变得更容易 我正在尝试运行控制台应用程序 consoleapp exe 而无需每次手动输入参数 命令通常采用以下形式 C consoleapp exe u
  • 字符串操作 - 还有其他有效的方法吗?

    我有一个要求 我需要在给定的字符串变量中插入转义序列 无论是在哪里单引号出现 我尝试使用split方法以及字符串分词器 没有一个适合我 所以我开发了下面提到的逻辑 在某些情况下它也会失败 谁能给我提供一种最简单的方法来实现这样的要求 pub