我从服务器获取了一些包含已知和未知部分的字符串。例如:
<op>example2</op>
我不希望解析XML或任何解析使用。我想做的是替换
<simp>example1</simp><val>example2</val>
使用空字符串(&#34;&#34;),该字符串将如下所示:
needle
我所知道的是以op(在&lt;&gt;中)开头并以/ op(在&lt;&gt;中)结尾,但内容(example2)可能会有所不同。
你能指点一下如何实现这个目标吗?
答案 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>","");
谢谢大家的帮助