`

自定义标签:解析化学表达式,并显示出上标与下标.

J# 
阅读更多

输入一个化学表达式,返回一个字符串,带有上标与下标,可以在网页中显示出上标与下标.

 

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-

 

0
0
分享到:
评论

相关推荐

    精通正则表达式基于.NET ASP PHP JSP JavaScript

    JSPExample7.jsp text.html页面提交至该页,并显示提交数据 text.html 页面数据提交至JSPExample7.jsp JSPExample8.jsp 不同类型混合运算自动转换 JSPExample9.jsp 不同类型混合运算强制...

    HTML元素大全

    68. `&lt;plaintext&gt;`:以固定宽度字体显示文本,不解析HTML标签,HTML5中已废弃。 69. `&lt;pre&gt;`:以固定宽度字体显示文本,保留空格和换行。 70. `&lt;script&gt;`:包含或链接到JavaScript代码。 71. `&lt;select&gt;`:创建下拉...

    FastReport技巧

    2. **插入上下标**:在 `frxmemoview.Text` 属性中使用 `&lt;sup&gt;` 和 `&lt;sub&gt;` 标签来创建上标和下标效果。 - 上标示例:`mm&lt;sup&gt;2&lt;/sup&gt;` 将显示为 mm²。 - 下标示例:`k&lt;sub&gt;6&lt;/sub&gt;` 将显示为 k₆。 通过这种...

    数学工具(MathTools).pdf

    31. **特殊符号与上下标**:`^`和`_`分别用于上标和下标,`not`、`sin`等用于特殊符号。 32. **后台运行DOS程序**:`system`函数调用外部命令。 33. **批处理模式**:`matlab -batch scriptfile`启动Matlab并执行...

    word公式编辑器快捷键(免费)

    4. **上标与下标添加**:`Ctrl+H`用于添加上标,而`Ctrl+L`用于添加下标,`Ctrl+J`则是用于添加同时包含上标和下标的结构,这些快捷键极大地提高了在数学公式中表示指数、对数等运算的能力。 5. **积分与根号样板...

    Mathmode--latex数学符号手册

    - **极限**:在内联模式下,极限表达式如`$\lim_{x \to \infty} f(x)$`会被紧凑地显示,上标和下标位置位于符号的右侧上方和下方。 - **分数命令**:分数在内联模式下通常表现为斜体形式,如`$\frac{a}{b}$`。如果...

    latex排版文档

    - 上下标:`^{上标}` 和 `_{下标}`。 - 矩阵:使用 `pmatrix` 或 `bmatrix` 等环境。 #### 三、数学建模中的 LaTeX 排版技巧 1. **模板使用**: - 利用预先定义好的模板可以大大加快排版速度。 - 在模板中预设...

    xhtmlcheatsheet.pdf

    本文将根据“xhtmlcheatsheet.pdf”中的信息,深入解析XHTML中常用的块级元素(Block Elements)与内联元素(Inline Elements),帮助读者掌握XHTML的基础标签和属性。 #### 块级元素(Block Elements) 块级元素通常...

    Latex 讲义(科技论文).doc

    3. **上下标**:使用 `_` 和 `^` 来表示下标和上标。 4. **分数**:使用 `\frac{分子}{分母}` 来表示分数。 5. **方根**:使用 `\sqrt[根指数]{被开方数}` 来表示方根。 6. **求和**:使用 `\sum_{下限}^{上限}` ...

    自定义ubb代码,preg_replace()函数的一些代码

    - 正则表达式用于替换各种标题标签(h1-h6),链接(url)、图片(img)、颜色(color)、大小(size)、上标(sup)、下标(sub)、预格式文本(pre)、邮箱(email)、斜体(i)、加粗(b)、引用(quote)和代码...

    latex常用符号[整理].pdf

    此外,LaTeX还支持自定义数学运算符,可以通过`\mathop{operator}\limits^{upper}_{lower}`来实现运算符的上标和下标位于正上方和正下方的效果。 通过以上详细介绍,我们可以看到LaTeX提供了一套强大且灵活的工具来...

    latex 入门级的教程 东北大学

    **4.3 上标与下标** - 上标使用`^`,下标使用`_`。 **4.4 分数和分式** - 分数可以使用`\frac{分子}{分母}`来表示。 **4.5 根式** - 使用`\sqrt[n]{表达式}`来表示n次根号下的表达式。 **4.6 求和和积分** - ...

    用“域”编辑公式.doc

    另外,上标和下标可以通过“Ctrl + =”和“Ctrl + Shift + =”快捷键来实现,使公式更符合学术规范。 **4. 特殊符号的输入** 对于一些特殊符号,如“AB”、“\s\up2( )∥”,可以利用“\”开关来输入。例如,平行...

    Office 中像LaTex那样快速打数学公式

    上下标的输入与LaTeX一致,使用`_`和`^`符号,紧随其后的是下标或上标的内容。自定义符号和命令的能力是Office公式编辑器的亮点之一,允许用户创建个人化的快捷命令,减少记忆负担,提高输入速度。这通过公式编辑...

    The LATEX Mathematics Companion.pdf

    本文将根据给定的文件内容,提炼出关键的知识点,深入解析LATEX数学排版的核心概念与技巧。 ### 一、数学排版入门 #### 1.1 关于数学排版的几点说明 数学排版不仅仅是简单的文字处理,它涉及到对数学符号、公式...

Global site tag (gtag.js) - Google Analytics