java 字符串文字筛选

我了解Java语言的思想很难以向后兼容的方式进行维护。 我知道JDK API(例如集合)的想法很难打破。 是。

我不明白为什么Java 仍然没有多行字符串文字。

您多久编写一次这样的JDBC代码(或您想要嵌入到Java中的任何其他外部语言或标记,例如JSON或XML)?

try (PreparedStatement s = connection.prepareStatement("SELECT * "+ "FROM my_table "+ "WHERE a = b "
)) {...
}

怎么了

  • 语法正确性 ,即不要忘记在每行的末尾添加空格
  • 宿主语言的样式与外部语言的样式 ,请确保上面的代码看起来用Java格式看起来“不错”,但对于使用方服务器端则没有格式化
  • SQL注入 ,我们不是教导我们的下辈不要在SQL中执行这种字符串连接以防止SQL注入吗? 当然,以上内容仍然是安全的,但是是什么原因使经验不足的维护者无法嵌入用户输入呢?

今天,我正在使用Xtend编写一些代码, Xtend是一种非常有趣的语言,可以编译成Java源代码。 Xtend对模板非常有用(例如,用于生成jOOQ的Record1 – Record22 API)。 我注意到多行字符串的另一个非常好的功能:

无需逃脱!

Xtend中的多行字符串以三撇号终止。 例如

// Xtend
val regex = '''import java\.lang\.AutoCloseable;'''

是的,以上是有效的Java正则表达式。 匹配AutoCloseable类型的导入时,我在转义点。 我不必在普通字符串中执行繁琐的两次转义操作,就可以告诉Java编译器反斜杠实际上是反斜杠,而不是Java转换了以下字符:

// Java
String regex = "import java\\.lang\\.AutoCloseable;";

所以……转换为我们最初SQL示例,我真的很想写这个:

try (PreparedStatement s = connection.prepareStatement('''SELECT *FROM my_tableWHERE a = b'''
)) {...
}

具有很大的优势:字符串插值(甚至PHP都有)!

String tableName = "my_table";
int b = 1;
try (PreparedStatement s = connection.prepareStatement('''SELECT *FROM ${tableName}WHERE a = ${b}'''
)) {...
}

小但非常有效的改进

这将是非常小的(就语言复杂性预算而言:只是一个新令牌),但是对于我们所有人都在Java中嵌入外部语言(SQL,XML,XPath,Regex等)的非常有效的改进。 我们做了很多。 我们讨厌它。

它不必像Xtend的多行字符串文字那样强大( 它确实与用于格式设置和模板化表达式的空白管理结合在一起 )。 但这将是一个开始。

请把它作为新年的决议! :)

翻译自: https://www.javacodegeeks.com/2016/01/please-java-finally-support-multiline-string-literals.html

java 字符串文字筛选

java 字符串文字筛选_拜托,Java。 最终是否支持多行字符串文字相关推荐

  1. 拜托,Java。 最终是否支持多行字符串文字

    我了解Java语言的思想很难以向后兼容的方式进行维护. 我知道JDK API(例如集合)的想法很难打破. 是. 我不明白为什么Java 仍然没有多行字符串文字. 您多久编写一次这样的JDBC代码(或您 ...

  2. java编写字符串连接程序注释_一种利用JAVA注释支持多行字符串的方法

    从BeetlSql项目将SQL全放在Beetl模板里得到启发,又想到一个比较偏门的用法.以下代码实测通过,详见jSqlBox项目的test\examples\multipleLineSQL\SqlTe ...

  3. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  4. 文本解析 python 多行,关于python:基于文本的数据格式,支持多行字符串

    我搜索支持多行字符串的基于文本的数据格式. JSON不允许多行字符串: >>> import json >>> json.dumps(dict(text='firs ...

  5. java 字符串文字筛选_重新开始Java的原始字符串文字讨论

    java 字符串文字筛选 在2018年12月宣布 将从JDK 12中删除原始字符串文字 . 现在,在新的一年中,与Java中原始字符串文字的设计有关的讨论又开始了. 在琥珀色专家OpenJDK邮件列表 ...

  6. java string最大长度_一个Java字符串中到底有多少个字符?

    作者:鸟窝 依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 (0),最大值是(65535), 也就是一个字符以2个字节来表示,难道Java最多只能表示 65535个 ...

  7. java字符串连接效率_关于java:字符串连接中的“+”是否会影响效率?

    本问题已经有最佳答案,请猛点这里访问. 我在java中使用过String,StringBuilder和StringBuffer. 我想到了这个问题,而我从效率的角度思考. 字符串连接中的"+ ...

  8. java字符串逐个分解_改进JAVA字符串分解的方法

    改进JAVA字符串分解的方法 一.概述 大多数Java程序员都曾经使用过java.util.StringTokenizer类.它是一个很方便的字符串分解器,主要用来根据分隔符把字符串分割成标记(Tok ...

  9. java获取字符串最长_基于java查找最长字符串代码实例

    题目:编写程序,针对输入的N个字符串,输出其中最长的字符串 输入样例: 4 zhaoming zhangming sunming liming 输出样例: 最长的字符串:zhangming 代码如下 ...

最新文章

  1. android 处理双击事件
  2. mysql性能调优快捷键_mysql优化篇
  3. Matlab画图小结(二)
  4. .13-Vue源码之patch(3)(终于完事)
  5. wds+mdt 分布式自动部署 操作系统
  6. 五子棋c语言算杀算法,c语言 五子棋危险判断 求大神解释啊
  7. 更改hadoop集群yarn的webui中的开始时间和结束时间为本地时间
  8. 创建一个1000w个随机浮点数的数组
  9. leetcode求众数
  10. Facebook发布神经蛋分离法,可从嘈杂环境中提取音视频
  11. Jquery取form表单中的所有参数
  12. 计算机毕业设计-springboot疫情管理系统-社区防疫管理系统java-小区预防疫情统计管理系统代码
  13. RBF神经网络学习及实践
  14. [知了堂学习笔记]_IO流之File类的应用
  15. 如何把pdf拆分成多个文件?
  16. Linux 打包压缩(tar、gzip、bzip、xz)备份(备份dump genisoimage 还原restore)
  17. 百度,你出来解释下什么是文本相似?
  18. linux下root切换普通用户,linux之普通用户与root用户之间切换方法
  19. iOS 打开AppStore指定app下载页
  20. html导出带页码的word,使用js把html导出word,并配置样式和分页功能

热门文章

  1. P4197-Peaks【Kruskal重构树,主席树】
  2. P5664-Emiya家今天的饭【dp】
  3. nssl1454-最短路【并查集,贪心】
  4. P3629-[APIO2010]巡逻【树的直径】
  5. 初一模拟赛总结(3.23)
  6. 【动态规划】公共子串
  7. Full_of_Boys训练6总结
  8. SpringBoot maven打包源码发布到仓库配置
  9. Hadoop入门(八)Mapreduce高级shuffle之Partitioner
  10. Java自动化邮件中发送图表(一)