用已知的开头和结尾替换部分字符串

时间:2018-05-02 10:37:21

标签: java android

我从服务器获取了一些包含已知和未知部分的字符串。例如:

<op>example2</op>

我不希望解析XML或任何解析使用。我想做的是替换

<simp>example1</simp><val>example2</val>

使用空字符串(&#34;&#34;),该字符串将如下所示:

needle

我所知道的是以op(在&lt;&gt;中)开头并以/ op(在&lt;&gt;中)结尾,但内容(example2)可能会有所不同。

你能指点一下如何实现这个目标吗?

4 个答案:

答案 0 :(得分:2)

您可以使用正则表达式。像

这样的东西
<op>[A-Za-z0-9]*<\/op>

应该匹配。但您可以对其进行调整,以便更好地满足您的要求。例如,如果您知道只能显示某些字符,则可以更改它。 之后,您可以使用String#replaceAll方法使用空字符串删除所有匹配的匹配项。

看看这里测试正则表达式:https://regex101.com/r/WhPIv4/3 并在此处检查将正则表达式和替换项作为参数的replaceAll方法:https://developer.android.com/reference/java/lang/String#replaceall

答案 1 :(得分:2)

你可以尝试

str.replace(str.substring(str.indexOf("<op>"),str.indexOf("</op>")+5),"");

要全部删除,请使用 replaceAll()

str.replaceAll(str.substring(str.indexOf("<op>"),str.indexOf("</op>")+5),"");

我试过了样品,

String str="<simp>example1</simp><op>example2</op><val>example2</val><simp>example1</simp><op>example2</op><val>example2</val><simp>example1</simp><op>example2</op><val>example2</val>";
Log.d("testit", str.replaceAll(str.substring(str.indexOf("<op>"), str.indexOf("</op>") + 5), ""));

日志输出

D/testit: <simp>example1</simp><val>example2</val><simp>example1</simp><val>example2</val><simp>example1</simp><val>example2</val>

修改

正如#Elsafar所说, str.replaceAll("<op>.*?</op>", "") 会有效。

答案 2 :(得分:1)

像这样使用:

    String str = "<simp>example1</simp><op>example2</op><val>example2</val>";
    String garbage = str.substring(str.indexOf("<op>"),str.indexOf("</op>")+5).trim();
    String newString = str.replace(garbage,"");

答案 3 :(得分:0)

我将所有答案结合起来并最终使用:

st.replaceAll("<op>.*?<\\/op>","");

谢谢大家的帮助