在特殊字符之间查找文本并替换字符串

时间:2017-09-07 13:15:04

标签: java string replace substring

例如,我有一个包含以下内容的字符串:

String s = "test string *67* **Hi**";

我想得到这个字符串:

*67*

有了星星,所以我可以开始替换那部分字符串。我的代码目前看起来像这样:

String s = "test string *67* **Hi**";

        s = s.substring(s.indexOf("*") + 1);
        s = s.substring(0, s.indexOf("*"));

这输出:67没有星星。

我想知道如何在一些特殊字符之间获取字符串,但不能将字符组合在一起,就像我想要的那样。

输出应如下:

//output: test string hello **hi**

4 个答案:

答案 0 :(得分:2)

您只需扩展边界:

s = s.substring(s.indexOf("*"));
s = s.substring(0, s.indexOf("*", 1)+1);

答案 1 :(得分:2)

仅替换特殊字符之间的字符串:

00:00:00

DEMORegex explanation

修改
要删除特殊字符,请使用以下正则表达式:

String regex = "(\\s\\*)([^*]+)(\\*\\s)";
String s = "test string *67* **Hi**";
System.out.println(s.replaceAll(regex,"$1hello$3"));

// output: test string *hello* **Hi**

DEMO

答案 2 :(得分:1)

s = s.substring(s.indexOf("*"));
s = s.substring(0, s.indexOf("*", 1) + 1);

你的+1在错误的地方:)然后你只需要从第二个位置找到下一个

答案 3 :(得分:0)

我认为你甚至可以通过列表来获得你的输出

String s = "test string *67* **Hi**";

List<String> sList = Arrays.asList(s.split(" "));

System.out.println(sarray.get(sarray.indexOf("*67*")));

希望这会有所帮助。