我们知道java的字符串语法只能通过拼接字符串来解决,在模板输出时设计换行及对应会很麻烦。而对应的groovy、kotlin语言中的内插字符串拥有更多的优点
那么如果我使用java开发安卓项目、javaweb项目、javafx项目等
如何在一个已有java项目中使用内插字符串特性?
Zircon
支持在Java语言中使用内插字符串
实现类似于kotlin、Groovy等语言中内插字符串
支持android、java等所有使用javac的项目
几乎不会增加额外编译时间
代码内容支持idea补全提示(需自行配置)
-
使用示例
String add = "test2"; assertEquals($("test1 $add"), "test1 test2"); assertEquals($("test1 ${'Test,mode'.substring(0,6)}${1+2}"), "test1 Test,m3"); -
插件引入
使用Gradle构建项目
Step 1. 在你的根目录项目
build.gradle文件中进行如下操作allprojects { repositories { ... maven { url 'https://jitpack.io' } } //如果编译安卓项目,加入以下代码 gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs << "-Xplugin:ZrString" } } }Step 3. 在需要使用插件的module的
build.gradle文件中进行如下操作dependencies { ... annotationProcessor 'com.github.122006.Zircon:javac:版本号' implementation 'com.github.122006.Zircon:impl:版本号' }//如果编译标准java项目(非安卓项目),加入以下代码 compileJava { options.compilerArgs << "-Xplugin:ZrString" }使用Maven构建项目
Step 1. 增加依赖
<dependency> <groupId>com.github.122006.Zircon</groupId> <artifactId>javac</artifactId> <version>版本号</version> </dependency> <dependency> <groupId>com.github.122006.Zircon</groupId> <artifactId>impl</artifactId> <version>版本号</version> </dependency>Step 2. 配置jitpack仓库
<repositories> <repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> </repositories>Step 2. 配置javac参数("-Xplugin:ZrString")
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <compilerArgs> <arg>-Xplugin:ZrString</arg> </compilerArgs> </configuration> </plugin> -
配置IDEA自动补全参数(使用IDEA内置
IntelliLang插件)Step 1: Build项目来下载依赖,以使
IntelliLang插件检测到$()方法Step 2: Setting->->Editor->Language Injection
Step 3: 点击右侧'+'按钮 选择'
Java Parameter'(可选择导入配置文件以省略以下参数配置)[配置文件][others/ZrLanguageInjection.xml]
Step 4: 手动配置参数:
Lauguage:Groovy
Prefix:"""(3个双引号)
Suffix:"""(3个双引号)
Class Methods:com.by122006.zircon.Magic并勾选所有方法 -
其他注意事项
-
{}'标识,请注意'${}'内容代码的正确性
-
特殊语法:在${}代码块中,为了较少转义符的使用,你可以用单引号
'String'来修饰字符串。如果需要使用单引号以声明char类型,你需要使用\'C\'进行转义
-
-
代码注入说明
-
由于使用Groovy作为代码补全注入语言,会附带Groovy的语言特性,请不要使用这些特性
注:你也可以配置以下参数,使用Java作为注入语言,以避免错误语言特性
(由于LanguageInjection的限制,无法使用换行或加号拼接,遇到这种情况可使用逗号分隔多个字符串)
Java注入语言配置配置:
Lauguage:JAVA
Prefix:class V{Object a=
Suffix:;}
Class Methods:com.by122006.zircon.Magic并勾选所有方法
Value pattern:\$\{(.*?)\}|\$([A-Za-z_\u4e00-\u9fa5.][A-Za-z0-9_\u4e00-\u9fa5.]*)不勾选Single file -
注入时检查在极端情况下可能报错,但不会导致编译运行报错,可忽略
-
如果在字符串中使用美元符号
$,请使用转义符\\$ -
由于java方法名中允许使用
$字符,所以请不要在$xxx定义后追加'$xx'及'${}'
-
-
更新计划
-
开发相关idea插件自动化配置及字符串相关提示
-
使用$"" 以替代$("") 形式实现
-
更多特殊语法
-