首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过插入at索引来操作字符串

通过插入at索引来操作字符串
EN

Stack Overflow用户
提问于 2012-03-06 20:14:08
回答 6查看 97关注 0票数 2

我有一个字符串:

代码语言:javascript
复制
C6H14

我想要的是:

代码语言:javascript
复制
C<sub>6</sub>H<sub>14</sub>

所以基本上我想在数字前面加上<sub>,在数字后面加上</sub>。我如何才能做到这一点呢?请记住,字符串可以无限长:

代码语言:javascript
复制
X4Y6Z10W4T12
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-03-06 20:20:53

我不是java专家,但我很确定,你可以使用正则表达式替换函数,其中的模式是:

代码语言:javascript
复制
(\d+)

替换字符串将为:

代码语言:javascript
复制
<sub>$1</sub>

抱歉,我不是100%确定java语法,但它可能是这样的:

代码语言:javascript
复制
str = str.replaceAll("(\\d+)", "<sub>$1</sub>");

此方法是在Java 5中添加的

以下是有关java中regexp的更多信息:

http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

http://www.regular-expressions.info/java.html

http://javamex.com/tutorials/regular_expressions/search_replace.shtml

票数 5
EN

Stack Overflow用户

发布于 2012-03-06 20:20:03

为此,我将使用Matcher

代码语言:javascript
复制
StringBuffer sb = new StringBuffer();
Matcher m = Pattern.compile("\\d+").matcher(input);
while(m.find()) {
    m.appendReplacement(sb,"<sub>$0</sub>");
}
m.appendTail(sb);
String newString = sb.toString();
票数 2
EN

Stack Overflow用户

发布于 2012-03-06 20:25:28

为此,您需要构造一个新的String对象--没有办法“就地”更改String (String是不可变的)

String.replaceAll将为您完成此操作。

代码语言:javascript
复制
str = str.replaceAll( "\\d+", "<sub>$0</sub>" );

就是你所需要的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9583502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档