美文网首页
字符串值提取工具-02-value-extraction jav

字符串值提取工具-02-value-extraction jav

作者: 老马啸西风2020 | 来源:发表于2024-08-11 06:00 被阅读0次

场景

我们经常需要从字符串中提取指定的值。

如果要设计一个平台,常见提取策略都要支持。从零实现起来会比较麻烦。

希望实现一个整合常见提取策略的工具,便于在各个场景复用。

开源地址

value-extraction 值提取核心

值提取系列

字符串值提取工具-01-概览

字符串值提取工具-02-java 调用 js

字符串值提取工具-03-java 调用 groovy

字符串值提取工具-04-java 调用 java? Janino 编译工具

字符串值提取工具-05-java 调用 shell

字符串值提取工具-06-java 调用 python

字符串值提取工具-07-java 调用 go

场景

我们希望通过 java 执行 js,如何实现呢?

java 调用 js

package org.example;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class JavaCallJsDemo {

    public static void main(String[] args) {
        // 创建一个脚本引擎管理器
        ScriptEngineManager manager = new ScriptEngineManager();

        // 获取一个 JavaScript 引擎实例
        ScriptEngine engine = manager.getEngineByName("JavaScript");

        // 定义一个 JavaScript 脚本
        String script = "function greet(name) { return 'Hello, ' + name; } greet('World');";

        try {
            // 执行 JavaScript 脚本
            Object result = engine.eval(script);

            // 输出执行结果
            System.out.println(result);
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }

}

结果:

Hello, World

如何传入参数

我们如何传入参数呢?

我们希望参数是变化的,让 js 执行对应的脚本方法

代码

package org.example;

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class JavaCallJsWithArgsDemo {

    public static void main(String[] args) {
        // 创建一个脚本引擎管理器
        ScriptEngineManager manager = new ScriptEngineManager();

        // 获取一个 JavaScript 引擎实例
        ScriptEngine engine = manager.getEngineByName("JavaScript");

        // 定义一个 JavaScript 脚本
        String script = "function greet(name) { return 'Hello, ' + name; }";

        try {
            // 执行 JavaScript 脚本,定义函数
            engine.eval(script);

            // 创建Invocable实例
            Invocable invocable = (Invocable) engine;

            // 调用 JavaScript 函数并传递参数
            String result = (String) invocable.invokeFunction("greet", "World");

            // 输出执行结果
            System.out.println(result);
        } catch (ScriptException | NoSuchMethodException e) {
            e.printStackTrace();
        }
    }
}

nashorn 方案

jdk8 开始支持。

传入参数

package com.github.houbb.value.extraction.test.js;

import javax.script.Bindings;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

public class JavaScriptExample {

    public static void main(String[] args) {
        // 创建脚本引擎管理器
        ScriptEngineManager manager = new ScriptEngineManager();

        // 获取 JavaScript 引擎
        ScriptEngine engine = manager.getEngineByName("nashorn");

        // 创建绑定并设置参数
        Bindings bindings = engine.createBindings();
        bindings.put("name", "Alice");
        bindings.put("age", 30);

        // 定义 JavaScript 脚本
        String script = "var greeting = 'Hello, ' + name + '! You are ' + age + ' years old.'; greeting;";

        try {
            // 执行脚本并传递参数
            Object result = engine.eval(script, bindings);
            System.out.println(result);  // 输出结果
        } catch (ScriptException e) {
            e.printStackTrace();
        }
    }

}

缺点

jdk11 开始不再支持。

相关文章

  • 小洁详解《R数据科学》--第十章 使用stringr处理字符串(

    4.工具 • 确定与某种模式相匹配的字符串;• 找出匹配的位置;• 提取出匹配的内容;• 使用新值替换匹配内容;•...

  • JavaScript中字符串基本方法(二)

    今天继续讲一下字符串的使用方法; slice(); 作用:可以提取字符串中的某个部分; 返回值:提取的字符串; 参...

  • 1127 chapter 10 stringr 下篇

    工具 确定与某种模式相匹配的字符串; 找出匹配的位置; 提取出匹配的内容; 使用新值替换匹配内容; 基于匹配拆分字...

  • ubuntu学习_1

    常用系统工作命令 echo命令 用于在终端输出字符串或变量提取后的值 输出字符串到终端屏幕上: 提取变量shell...

  • Linux学习(二) -- 常用命令

    系统工作命令 echoecho [字符串 | $变量] 在终端输出字符串或者变量提取后的值 datedate [选...

  • JavaScript正则表达式

    Regular Expression使用单个字符串来描述、匹配一系列符合某个句法规则的字符串 1-1 工具 Jav...

  • Linux-常用系统工作命令

    echo 命令用于在终端输出字符串或变量提取后的值,格式为“echo [字符串 | $变量]”。echo Linu...

  • 《Linux就该这么学 》笔记-CentOS常用命令

    1:echo 命令 用于在终端输出字符串或变量提取后的值,格式为“echo [字符串 | $变量]”。 2:dat...

  • Ubuntu常用命令学习 (2)

    1.echo 命令    echo 命令用于在终端输出字符串或变量提取后的值,格式为"echo [字符串|$变量]...

  • es 解构

    1⃣️ 数组解构 2⃣️对象解构 别名 3⃣️字符串解构 作用1利用解构实现 默认值 和快速赋值/传值2 快速提取...

网友评论

      本文标题:字符串值提取工具-02-value-extraction jav

      本文链接:https://www.haomeiwen.com/subject/samlkjtx.html