输入一个化学表达式,返回一个字符串,带有上标与下标,可以在网页中显示出上标与下标.
public String getComposeHTML(String str_value){
//System.out.print(str_value);
StringBuffer sb = new StringBuffer();
int index = 0;
char[] chars = str_value.toCharArray();
// 从前往后
for (int i = 1; i < chars.length; i++) {
// 当前字符是+或-,前一个字符是字母或右括号
if(chars[i]=='+' || chars[i]=='-' ){
if(i-1>=0 ){
if(chars[i-1]==')'
|| (chars[i-1]>='A' && chars[i-1]<='Z')
|| (chars[i-1]>='a' && chars[i-1]<='z') ){
sb.append(str_value.substring(index,i));
index = i+1;
sb.append("<sup>"+chars[i]+"</sup>");
}
}
continue;
}else if(chars[i]>='0' && chars[i]<='9'){
//if(前一个字符是 右括号 或者 前一个字符是字母)
if(chars[i-1]==')'
|| (chars[i-1]>='A' && chars[i-1]<='Z')
|| (chars[i-1]>='a' && chars[i-1]<='z') ){
if( i >= chars.length-1){
// IF:当前已到结尾了,后面再也没有字符了
sb.append(str_value.substring(index,i));
index = i+1;
sb.append("<sub>"+str_value.substring(i,i+1)+"</sub>");
break;
}else {
// else:当前还没到结尾,后面还有其它的字符
// for( 循环取后一个字符 ){
for ( int j=i+1; j < chars.length; j++) {
if(chars[j]>='0' && chars[j]<='9'){
// if(后一个字符也是数字) 则继续判断下一个字符
continue;
} else if(chars[j]=='+' || chars[j]=='-') {
// if(后一个字符是+加号或-减号) 则这个数字串是上标
sb.append(str_value.substring(index,i));
index = j+1;
sb.append("<sup>"+str_value.substring(i,j+1)+"</sup>");
i = j+1;
break;
} else {
// else(后一个字符不是前面所说的情况) 则这个数字串是下标
sb.append(str_value.substring(index,i));
index = j;
sb.append("<sub>"+str_value.substring(i,j)+"</sub>");
i = j-1;
break;
}//~ if-else 根据下一个字符的类型来分别处理
} //~ for(j++)
} //~if-else 是否已经是结尾字符
} //~if 前一个字符是字母或右括号
} //~ if-else 判断当前字符的类型
} //~ for(i++)
if(index<str_value.length()){
sb.append( str_value.substring(index,str_value.length()));
}
//System.out.println(" --> "+sb.toString());
return sb.toString();
}
已知的BUG : 无法 解析 NO3-
分享到:
相关推荐
JSPExample7.jsp text.html页面提交至该页,并显示提交数据 text.html 页面数据提交至JSPExample7.jsp JSPExample8.jsp 不同类型混合运算自动转换 JSPExample9.jsp 不同类型混合运算强制...
68. `<plaintext>`:以固定宽度字体显示文本,不解析HTML标签,HTML5中已废弃。 69. `<pre>`:以固定宽度字体显示文本,保留空格和换行。 70. `<script>`:包含或链接到JavaScript代码。 71. `<select>`:创建下拉...
2. **插入上下标**:在 `frxmemoview.Text` 属性中使用 `<sup>` 和 `<sub>` 标签来创建上标和下标效果。 - 上标示例:`mm<sup>2</sup>` 将显示为 mm²。 - 下标示例:`k<sub>6</sub>` 将显示为 k₆。 通过这种...
31. **特殊符号与上下标**:`^`和`_`分别用于上标和下标,`not`、`sin`等用于特殊符号。 32. **后台运行DOS程序**:`system`函数调用外部命令。 33. **批处理模式**:`matlab -batch scriptfile`启动Matlab并执行...
4. **上标与下标添加**:`Ctrl+H`用于添加上标,而`Ctrl+L`用于添加下标,`Ctrl+J`则是用于添加同时包含上标和下标的结构,这些快捷键极大地提高了在数学公式中表示指数、对数等运算的能力。 5. **积分与根号样板...
- **极限**:在内联模式下,极限表达式如`$\lim_{x \to \infty} f(x)$`会被紧凑地显示,上标和下标位置位于符号的右侧上方和下方。 - **分数命令**:分数在内联模式下通常表现为斜体形式,如`$\frac{a}{b}$`。如果...
- 上下标:`^{上标}` 和 `_{下标}`。 - 矩阵:使用 `pmatrix` 或 `bmatrix` 等环境。 #### 三、数学建模中的 LaTeX 排版技巧 1. **模板使用**: - 利用预先定义好的模板可以大大加快排版速度。 - 在模板中预设...
本文将根据“xhtmlcheatsheet.pdf”中的信息,深入解析XHTML中常用的块级元素(Block Elements)与内联元素(Inline Elements),帮助读者掌握XHTML的基础标签和属性。 #### 块级元素(Block Elements) 块级元素通常...
- 正则表达式用于替换各种标题标签(h1-h6),链接(url)、图片(img)、颜色(color)、大小(size)、上标(sup)、下标(sub)、预格式文本(pre)、邮箱(email)、斜体(i)、加粗(b)、引用(quote)和代码...
此外,LaTeX还支持自定义数学运算符,可以通过`\mathop{operator}\limits^{upper}_{lower}`来实现运算符的上标和下标位于正上方和正下方的效果。 通过以上详细介绍,我们可以看到LaTeX提供了一套强大且灵活的工具来...
**4.3 上标与下标** - 上标使用`^`,下标使用`_`。 **4.4 分数和分式** - 分数可以使用`\frac{分子}{分母}`来表示。 **4.5 根式** - 使用`\sqrt[n]{表达式}`来表示n次根号下的表达式。 **4.6 求和和积分** - ...
另外,上标和下标可以通过“Ctrl + =”和“Ctrl + Shift + =”快捷键来实现,使公式更符合学术规范。 **4. 特殊符号的输入** 对于一些特殊符号,如“AB”、“\s\up2( )∥”,可以利用“\”开关来输入。例如,平行...
上下标的输入与LaTeX一致,使用`_`和`^`符号,紧随其后的是下标或上标的内容。自定义符号和命令的能力是Office公式编辑器的亮点之一,允许用户创建个人化的快捷命令,减少记忆负担,提高输入速度。这通过公式编辑...
本文将根据给定的文件内容,提炼出关键的知识点,深入解析LATEX数学排版的核心概念与技巧。 ### 一、数学排版入门 #### 1.1 关于数学排版的几点说明 数学排版不仅仅是简单的文字处理,它涉及到对数学符号、公式...