Java 如何从'<';至'&燃气轮机';在爪哇
我有一个接受输入字符串的程序。我想删除字符“”中的任何内容。例如,如果字符串Java 如何从'<';至'&燃气轮机';在爪哇,java,string,substring,Java,String,Substring,我有一个接受输入字符串的程序。我想删除字符“”中的任何内容。例如,如果字符串 "P.S.<!-- BODY { color:white; background-color: transparent; font-family:sans-serif; } --> Hello how are you today?" “你好,你好吗?” 我希望输出字符串只包含“您好,今天好吗?”。在Java中有没有一种简单的方法可以做到这一点?谢谢使用正则表达式: news
"P.S.<!--
BODY
{
color:white;
background-color: transparent;
font-family:sans-serif;
}
--> Hello how are you today?"
“你好,你好吗?”
我希望输出字符串只包含
“您好,今天好吗?”
。在Java中有没有一种简单的方法可以做到这一点?谢谢使用正则表达式:
newstr = str.replaceAll("<[^>]*>", "");
newstr=str.replaceAll(“]*>”,“”);
这意味着查找以
开头的每个子字符串,然后查找字符
。然后用空字符串“”
替换所有这些子字符串
参考:如果您希望避免使用正则表达式,可以使用子字符串:
String origText = "P.S.<!--"+
"BODY"+
"{"+
"color:white;"+
"background-color: transparent;"+
"font-family:sans-serif;"+
"}"+
"--> Hello how are you today?";
String revised = origText.substring(0, origText.indexOf('<')) +
origText.substring(origText.lastIndexOf('>')+1, origText.length());
String origText=“你好,今天好吗?”;
String revised=origText.substring(0,origText.indexOf(“”)+1,origText.length());
`而“”组合只存在一次或多次?我建议将目标对准
而不是
,这样您实际上是在提取注释,而不仅仅是任何标记。也许您的意思是]*>
?当前的regexp将把“bar”
变成”
,而不是“bar”
@Mike Samuel:已经编辑好了,谢谢。发生的事情是,我最初想使用一个不情愿的量词,即/
,但决定不使用它的概念复杂性。我在改变决定的过程中犯了一个编辑错误。谢谢,这个方法非常有效。有没有一个像replaceAll这样的方法可以用于跨类?它就像一个字符串,但是它有额外的东西,比如文本颜色和样式,很抱歉延迟了。需要注意的关键是,Scanner扩展了CharSequence。因此,您构建一个模式,在该序列上获得匹配器,然后进行替换。即:String result=Pattern.compile(“]*>”).matcher(myscannerobject.replaceAll(“”)代码>这将在String text=“这是atest”上失败代码>确实如此。若要修复,只需将lastIndexOf('>')
替换为indexOf('>')
@glowcoder:true,但OP没有指定多次出现。@Nayuki indexOf将错过第二次出现。您必须循环才能在此类示例中使用子字符串。@JJ:上下文非常明显-它是一个XML注释。因此,虽然OP没有说“我需要多发事件处理”,但他的例子显然是一个标准。