Java 删除一对散列中的字符串部分
我想删除被Java 删除一对散列中的字符串部分,java,regex,Java,Regex,我想删除被#包围的字符串的一部分,如下所示: String s = "#thispartneedstogo#anythingelsecanremain" //remove "#thispartneedstogo#" s = "anythingelsecanremain" 我尝试使用以下代码执行此操作: String stripped = content.replaceAll("#.*?#", "").replace("\n", ""); 然而,它并没有给我预期的结果 请注意,我想要一个通用的
#
包围的字符串的一部分,如下所示:
String s = "#thispartneedstogo#anythingelsecanremain"
//remove "#thispartneedstogo#"
s = "anythingelsecanremain"
我尝试使用以下代码执行此操作:
String stripped = content.replaceAll("#.*?#", "").replace("\n", "");
然而,它并没有给我预期的结果
请注意,我想要一个通用的答案,它将检测并删除这个所谓的“模式”,即在字符串中,如“#删除#保留#删除#”
,如果可能的话,只保留“保留”
String ss[] = s.split("#");
String desiredStr = ss[ss.length-1];
或者可以使用字符串标记器对输入字符串进行标记,并使用#free获取所有参数
您可能需要使用replaceAll方法执行此操作:
String ss = s.replaceAll(replace_what, replace_with_what);
所以你需要,
字符串ss=s.replaceAll(“#“,”);//肯定有人在答案列表中纠正了这一点:)
如果要在“#删除#保留#删除#”中检测特定单词,如“保留”,最好的方法是执行以下操作:
// String s = "#thispartneedstogo#anythingelsecanremain";
String s = "#remove#keep#remove#";
List<String> list = Arrays.asList(s.split("#"));
// Suppose you want to check if something specific is in the list, but not
// necessarily how many times i.e. if there are duplicates:
// Obviously, parameterise remove with something like string ps = "remove";
if (list.contains("remove")){
System.out.println("Found remove");
}
您的代码确实按照预期的方式工作:
String s = "#remove#keep#remove#";
String stripped = s.replaceAll("#.*?#", "");
System.out.println(stripped); // keep
在单独的变量中设置要替换的零件
String a = "#thispartneedstogo#";
String s = "anythingelsecanremain";
s = s+a;
// to replace
System.out.println(s.replace("#thispartneedstogo#");
// to add
System.out.println(a.concat(s));
一般来说,正则表达式中的“*”是贪婪的,这意味着它将消耗所有可用的匹配项。在你的情况下,它将从第一个“γ”到最后一个“α”,包括“在中间”。
将正则表达式更改为更具体的:
"#[^#]*#"
为了避免匹配中间的“#”它给了您什么结果,以及它到底有什么出乎意料的地方?我不会为java中的行为发誓,但通常,*
是贪婪的,因此它会匹配最外层的“#”之间的所有内容,而replaceAll结果将是一个空字符串。我希望使用模式“#[^#]*#”
来产生所需的结果。您的代码是正常的。如果您执行的代码缺少问号,那么结果将是一个空白字符串,因为*
是贪婪的“它没有给我预期的结果”。您得到了什么结果以及您期望得到什么?@David您的解决方案实际上解决了问题。如果你能给我一个答复,我很乐意接受。再次感谢。这并没有回答更一般的问题,即如何删除哈希之间出现的任何内容。例如,如何将#Stuff ToDelete#
导入a
?感谢您的输入-但我想要的是类似Java的注释,即/**/代码>。不过还是要谢谢你
"#[^#]*#"