猿问

从字符串中删除包含特定单词或部分单词的单词

我有一个字符串,我想删除其中包含特定单词的特定单词。

例如: String str = "Create_DateTime, Hello, DateTime, Before" 每个包含单词“Date”的单词都应该被删除,所以在删除之后我们将得到以下字符串: Hello,Before

我有这个字符串: Expected_Start_DateTime,Metrics_Count,Device_UID,Command_Name,Command_Interval,Start_DateTime,Instance_UID,Execution_Date,Metrics_Size_KB,End_DateTime,Tags_Countfrom command_execution

我已经设法删除了所有不需要的词,所以现在我的字符串看起来像这样: ,Metrics_Count,Device_UID,Command_Name,Command_Interval,,Instance_UID,,Metrics_Size_KB,,Tags_Countfrom command_execution

我想删除单词前后的“,”

这是我用来执行上述操作的代码:

String str1 = str.replaceAll("\\w*Date\\w*","");

原始字符串: Expected_Start_DateTime,Metrics_Count,Device_UID,Command_Name,Command_Interval,Start_DateTime,Instance_UID,Execution_Date,Metrics_Size_KB,End_DateTime,Tags_Countfrom command_execution

预期的:

Metrics_Count,Device_UID,Command_Name,Command_Interval,,Instance_UID,Metrics_Size_KB,,Tags_Countfrom command_execution

实际的: ,Metrics_Count,Device_UID,Command_Name,Command_Interval,,Instance_UID,,Metrics_Size_KB,,Tags_Countfrom command_execution


哈士奇WWW
浏览 163回答 3
3回答

慕村9548890

一种方法是使用 java 流String str = "Expected_Start_DateTime,Metrics_Count,Device_UID,Command_Name,Command_Interval,Start_DateTime,Instance_UID,Execution_Date,Metrics_Size_KB,End_DateTime,Tags_Countfrom command_execution";String result = Stream.of(str.split(","))                      .filter(word -> !word.contains("Date"))                      .collect(Collectors.joining(","));

慕雪6442864

如上所述,使用数组的方法.split()可能是更好的方法,但如果您对正则表达式感到好奇,可以使用以下几种方法来实现您的目标。\b\w*?[dD]ate\w*?\b- 这会选择其中包含“日期”的任何单词。该\b标签指定一个单词边界 - 如果字符不是单词字符(不是 ),\w它会中断,并且还会在字符串的开头和结尾处中断,因此它也会捕获字符串中的第一个和最后一个单词.该\w标记指定一个“单词”字符:a-z、A-Z、0-9和_。由于您的话中没有任何奇怪的字符,因此效果很好!*?根据需要匹配尽可能多的单词字符,但尽可能少。 这确保它捕获“日期”之前的所有字符,但只捕获该词所需的字符。[dD]ate从字面上查找单词dateor Date。在这里试试吧!^,*|,*$- 这会选择要处理的前导和尾随逗号。^,*- 将逗号锚定在字符串的前面,并尽可能多地获取。|或者...,*$- 获得尽可能多的逗号,固定在字符串的后面。在这里试试吧!,{2,}- 这会选择 2 个或更多逗号的所有实例,供您替换为单个逗号。,选择一个逗号,只要...{2,}它们之间有 2 到无限数量,彼此相邻。在这里试试吧!祝你好运!

慕婉清6462132

似乎您真正想做的是使用数组。(因为你似乎正在处理一个实际上是一堆字符串和逗号的字符串)。完成所需操作的一种方法是执行 str.split(","),然后循环检查 strArray[i].contains("date")。让我知道我是否应该更清楚
随时随地看视频慕课网APP

相关分类

Java
我要回答