import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.text.StrSubstitutor;
import bsh.Interpreter;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
Test t = new Test();
Map map = new HashMap();
map.put("N1", new Integer(1));
map.put("N2", new Integer(2));
map.put("N3", new Integer(3));
map.put("N4", new Integer(4));
map.put("N5", new Integer(22));
map.put("N6", new Integer(6));
String str = "你好$${${N5}+${N6}-${N4}}";
StrSubstitutor strSubstitutor = new StrSubstitutor(map);
String result = t.operateVariable(strSubstitutor.replace(str),map);
System.out.print(result);
}
public String operateVariable(String str ,Map map){
String result = "";
int begin = 0;
int end = 0;
int count = 0;
String temp = "";
for(int i=0;i<str.length();i++){
if(str.charAt(i)=='$'){
begin = i+2;
result += str.substring(end, i);
}
if(str.charAt(i)=='}'){
end = i+1;
temp = str.substring(begin, i);
Interpreter ii = new Interpreter();
try{
count = ((Integer)ii.eval(temp)).intValue();
}catch(Exception e){
e.printStackTrace();
}
result += count;
}
if(i==str.length()-1){
result += str.substring(end, i+1);
}
}
return result;
}
}
分享到:
相关推荐
### 公式解析类(字符串公式,自定义函数公式) #### 概述 本文将详细介绍一个公式解析类,该类能够处理字符串公式以及自定义函数公式。此类在数学计算、数据分析等领域有着广泛的应用,比如在电子表格软件或编程语言...
`parse` 方法接收公式字符串、中间公式映射(`formulas`)和基础数据映射(`values`),首先递归地替换所有中间变量,然后进行后缀表达式的转换和计算。 以下是一个简化版的 `FormulaParser` 类的实现: ```java ...
如果变量未定义,会显示为空字符串。你还可以通过点操作符访问对象的属性,如 `${user.name}`。 ### 3. 控制结构 #### 3.1 条件语句 - `if`:`<#if condition>`,当条件为真时执行代码块。 - `else`:与`if`配合...
这个方法遵循与数据库中`ORDER BY`语句相同的比较规则,将`null`转换为空字符串,并且空字符串被视为最大值。方法接收两个字符串`first`和`second`作为参数,返回一个整数,根据比较结果返回正数、零或负数,表示`...
例如,`public static void main(String args[])` 中的 `args` 是一个字符串类型的数组。 数组占用连续的内存地址,具有静态性,一旦创建就不能修改数组的长度。 数组的声明有两种格式: 1. 数组元素的数据类型 `...
给定的代码示例中,首先定义了一个字符到整数的映射(map, int> m)和一个整数到字符的映射(map, char> mm),以便于将字符串形式的数字转换为整数进行计算。在主循环中,输入两个大数字符串sa和sb,先对它们进行...
MATLAB中的基本操作包括数值运算、逻辑运算、字符串操作等。 ##### 1. 数值运算 - **加减乘除**:使用标准的算术运算符`+`, `-`, `*`, `/`。 - **幂运算**:使用`^`运算符。 - **转置**:使用`'`运算符进行矩阵...
在这个自编的计算器程序中,maptree可能被用作存储和计算表达式中变量的值,或者是用于优化计算过程的某种算法。 在设计计算器程序时,开发者通常会面临以下几个关键知识点: 1. **语法解析**:计算器程序需要理解...
1. **1.1 不使用临时变量交换值**:通常情况下,交换两个变量的值需要借助第三个临时变量,但在Python中可以通过简洁的方式直接实现这一功能,例如:`a, b = b, a`。 2. **1.2 构建字典时避免过多引用**:当构建...
- **字符串(string)**:用于表示变量和运算符。 - **列表(list)**:虽然代码示例中未直接使用,但列表可以用于其他类型的运算表达式存储。 2. **中缀表达式到后缀表达式的转换**: - **算法步骤**: 1. 读取...
5. **填充映射表**:在第18到24行,遍历分隔符字符串,对于每一个字符,将其对应的位在`map`数组中设置为1。这里的位运算非常巧妙,利用了位移和掩码操作来定位并修改目标位。 6. **确定起始位置**:在第25到33行,...
- **4.7.4 字符串替换**:使用`string map`命令进行字符串替换。 - **4.7.5 字符类别(class)测试**:使用`string is`命令测试字符类别。 - **4.7.6 字符串映射**:使用`string map`命令实现字符串的映射功能。 ####...
例如,`print("你好,%s" % s1)` 这个例子中,它会输出格式化的字符串,其中 `%s` 是一个占位符,会被 `s1` 变量的值替换。 3. **中文支持**:在Python中,为了支持中文字符,通常在文件的开头加入两行编码声明,如 ...
1. **输入处理**:当用户点击数字或运算符按钮时,它们的值被添加到一个字符串变量中。同时,需要检查输入是否合法,例如防止连续的运算符或错误的运算符组合。 2. **表达式解析**:使用栈数据结构来实现运算符...
JavaScript中的字符串是不可变的,这意味着对字符串的操作会返回新的字符串,而不会改变原始字符串。常用的字符串函数有: - `length`属性:获取字符串长度。 - `charAt(index)`:返回指定位置的字符。 - `...
- 结合正则表达式和`re.sub()`函数,可以高效地在一个字符串中替换多个不同的模式。 - **在不同命名约定之间转换** - 使用字符串操作和正则表达式,可以实现如驼峰命名法、下划线命名法等命名风格之间的转换。 -...
2. 类型转换:在Python中,不同类型的变量不能直接相加,例如数字和字符串。如果需要连接数字和字符串,必须先将数字转换为字符串,如`str(a) + b`。反之,如果要将字符串转换为数字,可以使用`int(d)`。`print()`...
在条件判断、逻辑运算中常用,如控制器中的条件渲染、模型查询等。 5. **空类型(Null)**: 当变量没有被赋值或被显式赋值为`null`时,它的类型为`null`。在Laravel中,这常用于表示某个值不存在或未知。 6. **...