Java 从字符串中提取多个相同的字符串
我需要将一个字符串拆分为一个特定的Java 从字符串中提取多个相同的字符串,java,string,Java,String,我需要将一个字符串拆分为一个特定的字符串,该字符串可以放在任何位置(该字符串可以同时出现多次),并通过向类似StringBuffer的内容中添加摘录来重建整个字符串。要查找的特定字符串的大小写必须不敏感 例如: String targeted = "test" ; String plainString ="azertytestqwerty"; //desired outcome StringBuffer sb = new StringBuffer(); sb.append("azerty"
字符串
,该字符串可以放在任何位置(该字符串可以同时出现多次),并通过向类似StringBuffer
的内容中添加摘录来重建整个字符串。要查找的特定字符串的大小写必须不敏感
例如:
String targeted = "test" ;
String plainString ="azertytestqwerty";
//desired outcome
StringBuffer sb = new StringBuffer();
sb.append("azerty");
sb.append("test");
sb.append("qwerty");
--------------------------
String targeted = "test" ;
String plainString ="a.test";
//desired outcome
StringBuffer sb = new StringBuffer();
sb.append("a.");
sb.append("test");
--------------------------
String targeted = "test" ;
String plainString ="test mlm";
//desired outcome
StringBuffer sb = new StringBuffer();
sb.append("test");
sb.append("mlm");
--------------------------
String targeted = "test" ;
String plainString ="aaatestzzztest";
//desired outcome
StringBuffer sb = new StringBuffer();
sb.append("aaa");
sb.append("test");
sb.append("zzz");
sb.append("test");
有什么简单的方法吗
我想我需要使用一个正则表达式,比如:
Pattern pattern = Pattern.compile(".*"+targeted +".*");
Matcher matcher = pattern.matcher(text);
if (matcher.find())
{
System.out.println(matcher.group(1));
}
但是我不知道如何提取字符串并按相同的顺序添加它们
我之所以这样做,是因为纯字符串
将使用POI添加到Excel单元格中,但我需要为目标字符串添加字体颜色
例如:
XSSFRichTextString richString = new XSSFRichTextString();
richString.append("azerty");
richString.append("test", highlightFont);
richString.append("qwerty");
cell.setCellValue(richString);
非常感谢模式和匹配器可能有点太多了 只需对单词进行拆分,然后在生成的数组上进行for循环 例子
publicstaticvoidmain(字符串[]args){
String targeted=“test”;
String plainString=“azertytestqwerty”;
String[]result=plainString.split(目标);
StringBuffer sb=新的StringBuffer();
for(int i=0;i
这是方法,您可以尝试任何组合
public String extractMultiples(String plainString, String targeted) {
StringBuffer sb = new StringBuffer();
// split covers all occurrences in the beginning;empty element, and in
// the middle
String[] result = plainString.split(targeted);
for (int i = 0; i < result.length; i++) {
sb.append(result[i]);
if (i < result.length - 1)// not the last one
sb.append(targeted);
}
// in the end
if (plainString.endsWith(targeted))
sb.append(targeted);
return sb.toString();
}
公共字符串提取倍数(字符串纯字符串,目标字符串){
StringBuffer sb=新的StringBuffer();
//“拆分”覆盖开头、空元素和中的所有引用
//中间
String[]result=plainString.split(目标);
for(int i=0;i
像这样添加到StringBuffer的目的是什么?如果你正在“重建整个字符串”,那么仅仅做StringBuffer sb=newstringbuffer(plainString)有什么错代码>@Dustin Ryan Roepsch。后期编辑更精确。非常感谢:)明白了!这更有意义:)如果您想对目标执行一些特殊操作,只需检查结果[i]是否等于(目标)@ΦXoce웃 Пepeúpa,您好,非常感谢您的回答,但目标字符串可以位于字符串中的任何位置,因此更复杂:/。我想我需要indexof
和子字符串之间的一些良好组合。请看我更新的问题。谢谢:)您好,非常感谢您的回答,但是目标字符串可以位于字符串中的任何位置,因此更复杂:/。请看我更新的问题。谢谢:)谢谢你,你真的帮了我很多。我不知道该怎么感谢你。我在努力奋斗。还有一种情况,当纯字符串仅由targetTestString组成时。缓冲区将添加targetTestString 2times@ulquiorra事实上它不会,因为结果是空的,它会在最后一节添加一次,我刚刚测试过。hh说谢谢的最好方式是投票选出答案,并称之为正确:),祝你好运。是的,事实上,我只是忘了包括区分大小写的管理。现在它工作了。非常感谢你,伙计:)
public String extractMultiples(String plainString, String targeted) {
StringBuffer sb = new StringBuffer();
// split covers all occurrences in the beginning;empty element, and in
// the middle
String[] result = plainString.split(targeted);
for (int i = 0; i < result.length; i++) {
sb.append(result[i]);
if (i < result.length - 1)// not the last one
sb.append(targeted);
}
// in the end
if (plainString.endsWith(targeted))
sb.append(targeted);
return sb.toString();
}