您好,首先感谢您的帮助。
我需要在 Java 中对大量字符串执行一些数据操作。
这是我必须修改的字符串类型的示例:
<span foreground="blue" weight="bold">accomplish</span> vt, vi, 완수하다, 성취하다, 달성하다, (학문과 기예를) 가르치다 <span foreground="blue" weight="bold">accomplish</span> a, prep, 완성한, 숙달한, 소양(교양)이 있는
我需要做什么:
从上面的字符串中删除所有
<span..../span>
我需要取出:
a、vt、vi、prep 等等。
不要删除所有字符,而只删除特定的 a、 vt、 vi、 准备, 和其他一些。
编辑编辑编辑 所以预期的输出是:
완수하다, 성취하다, 달성하다, (학문과 기예를) 가르치다 완성한, 숙달한, 소양(교양)이 있는
我想我必须使用正则表达式,但我对这件事绝对是新手。
请问有人可以帮我吗?
谢谢
最佳答案
使用String#replaceAll()
使用正则表达式:
<span.*?/span>
.replaceAll()
采用正则表达式作为第一个参数,而 .replace()
采用 String
(一个 CharSequence
实际上)。
Java代码:
String s = "<span foreground=\"blue\" weight=\"bold\">accomplish</span> vt, vi, 완수하다, 성취하다, 달성하다, (학문과 기예를) 가르치다 <span foreground=\"blue\" weight=\"bold\">accomplish</span> a, prep, 완성한, 숙달한, 소양(교양)이 있는 ";
System.out.println(s.replaceAll("<span.*?/span>", ""));
输出:
vt, vi, 완수하다, 성취하다, 달성하다, (학문과 기예를) 가르치다 a, prep, 완성한, 숙달한, 소양(교양)이 있는
更新:
如果您需要取出更多内容,可以使用 |
运算符将它们放入正则表达式中。例如:
<span.*?/span>|a,|vt,|vi,|prep,|whateverYouWantDontForgetToEscape
工作代码:
System.out.println(s.replaceAll("<span.*?/span>|a,|vt,|vi,|prep,", ""));
输出:
완수하다, 성취하다, 달성하다, (학문과 기예를) 가르치다 완성한, 숙달한, 소양(교양)이 있는
更新 2:
根据您刚刚发布的预期输出,您还希望删除重复的空格。为此,请使用此正则表达式:
(<span.*?/span>|a,|vt,|vi,|prep,)(\s(?<=\s))*
Java代码:
System.out.println(s.replaceAll("(<span.*?/span>|a,|vt,|vi,|prep,)(\\s(?<=\\s))*", ""));
输出:
완수하다, 성취하다, 달성하다, (학문과 기예를) 가르치다 완성한, 숙달한, 소양(교양)이 있는
关于java - 如何在 Java 中替换字符串(正则表达式?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16615840/