为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

哈士奇WWW 2023-05-24 16:04:14
我有一个字符串,我想删除其中包含特定单词的特定单词。例如: 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
查看完整描述

3 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

一种方法是使用 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(","));


查看完整回答
反对 回复 2023-05-24
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

如上所述,使用数组的方法.split()可能是更好的方法,但如果您对正则表达式感到好奇,可以使用以下几种方法来实现您的目标。

\b\w*?[dD]ate\w*?\b- 这会选择其中包含“日期”的任何单词。

  • \b标签指定一个单词边界 - 如果字符不是单词字符(不是 ),\w它会中断,并且还会在字符串的开头和结尾处中断,因此它也会捕获字符串中的第一个和最后一个单词.

  • \w标记指定一个“单词”字符:a-zA-Z0-9_。由于您的话中没有任何奇怪的字符,因此效果很好!

  • *?根据需要匹配尽可能多的单词字符但尽可能少 这确保它捕获“日期”之前的所有字符,但只捕获该词所需的字符。

  • [dD]ate从字面上查找单词dateor Date

在这里试试吧!


^,*|,*$- 这会选择要处理的前导和尾随逗号。

  • ^,*- 将逗号锚定在字符串的前面,并尽可能多地获取。

  • |或者...

  • ,*$- 获得尽可能多的逗号,固定在字符串的后面。

在这里试试吧!


,{2,}- 这会选择 2 个或更多逗号的所有实例,供您替换为单个逗号。

  • ,选择一个逗号,只要...

  • {2,}它们之间有 2 到无限数量,彼此相邻。

在这里试试吧!


祝你好运!


查看完整回答
反对 回复 2023-05-24
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

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



查看完整回答
反对 回复 2023-05-24
  • 3 回答
  • 0 关注
  • 161 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信