Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java删除除某些内容以外的所有内容_Java - Fatal编程技术网

Java删除除某些内容以外的所有内容

Java删除除某些内容以外的所有内容,java,Java,下面是一些代码: String cakes = "I like to eat ice cream sandwiches at night"; cakes = cakes.replace("ice cream", ""); System.out.println(cakes); 这将删除冰淇淋。酷。但我想说的是: String cakes = "I like to eat ice cream sandwiches at night"; cakes = "ic

下面是一些代码:

    String cakes = "I like to eat ice cream sandwiches at night";
    cakes = cakes.replace("ice cream", "");
    System.out.println(cakes);
这将删除冰淇淋。酷。但我想说的是:

    String cakes = "I like to eat ice cream sandwiches at night";
    cakes = "ice" thru "sandwiches";
    System.out.println(cakes);
这个虚构的操作将删除除冰和三明治之间的字母以外的所有内容,制作成“冰淇淋三明治”的线状蛋糕。那有可能吗

编辑:我有一个新代码:

    String cakes = "I like to eat ice cream sandwiches at night";
    String ice = "ice";
    String sandwiches = "sandwiches";
    cakes = cakes.substring(cakes.indexOf(ice),cakes.indexOf(sandwiches)+sandwiches.length());

    System.out.println(cakes);
这是可行的,但有一个问题:对于cake的某些值(例如网站的html代码),我得到一个错误:

          Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -number
          at java.lang.String.substring(Unknown Source)
          at package.cclass.main(cat.java:31)

正则表达式就是这样出现的

这篇文章有一个在Java中使用正则表达式的例子:

在本例中,表达式类似于:
“ice.*三明治”

编辑:我以为我们要删除这些词。我的错误。这里有一些代码可以做更多您想要的事情

Pattern p = Pattern.compile("ice.*sandwiches");
Matcher m = p.matcher("I like to eat ice cream sandwiches at night");
while (m.find()) {
    String s = m.group(1);
}

可以使用正则表达式,也可以只使用String.indexOf()函数,例如

您可以尝试以下方法:

String ice = "ice";
String sandwiches = "sandwiches";
cakes = cakes.substring(cakes.indexOf(ice),cakes.indexOf(sandwiches)+sandwiches.length());

使用基于正则表达式的替换(第一个)(提示)?记住:API文档是您的朋友。(通常)还是一个简单的索引和子字符串?请出示至少一些努力的证据。正则表达式。“ice(.*)cream”(或任何符合您需要的正则表达式)我尝试将“I like to eat”和“sandwiches at night”删除为。替换为。但是,我想创建一个没有用的应用程序。我只需对这两个应用程序执行indexOf,并在它们之间执行子字符串。如果您的意思是cakes=cakes.replaceAll(“\\ice*sandwich”,”);,那会让你大吃一惊你有“\\ice*三明治”吗?这个答案清楚地告诉你“冰。*三明治”,所以试试蛋糕=蛋糕。replaceAll(“冰。*三明治”);那也不行。那只会去掉冰淇淋sandwiches@user1797443例如我实际上误解了你原来的问题。我以为你想删除那些角色!很好,但是如果我有一个大字符串(例如log.txt文档),它会说:线程“main”java.lang.StringIndexOutOfBoundsException中的异常:字符串索引超出范围:-99:(堆栈溢出只允许600个字符,所以不允许。如果我尝试放入小字符串,(例如“我是一个冰凉的沙子,哪个字符串!”),它可以工作,但如果它是一个较长的字符串,它就不能工作(例如150次)我的意思是将该内容放在你的问题编辑中。然后你可以删除它。@user1797443:我能做的最好的猜测是,在这个大字符串中,你要么没有“ice”单词,要么没有“三明治”单词。确保这两个单词都存在于该字符串中。
String ice = "ice";
String sandwiches = "sandwiches";
cakes = cakes.substring(cakes.indexOf(ice),cakes.indexOf(sandwiches)+sandwiches.length());