3 回答
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(","));
TA貢獻1812條經驗 獲得超5個贊
如上所述,使用數組的方法.split()可能是更好的方法,但如果您對正則表達式感到好奇,可以使用以下幾種方法來實現您的目標。
\b\w*?[dD]ate\w*?\b- 這會選擇其中包含“日期”的任何單詞。
該
\b標簽指定一個單詞邊界 - 如果字符不是單詞字符(不是 ),\w它會中斷,并且還會在字符串的開頭和結尾處中斷,因此它也會捕獲字符串中的第一個和最后一個單詞.該
\w標記指定一個“單詞”字符:a-z、A-Z、0-9和_。由于您的話中沒有任何奇怪的字符,因此效果很好!*?根據需要匹配盡可能多的單詞字符,但盡可能少。 這確保它捕獲“日期”之前的所有字符,但只捕獲該詞所需的字符。[dD]ate從字面上查找單詞dateorDate。
^,*|,*$- 這會選擇要處理的前導和尾隨逗號。
^,*- 將逗號錨定在字符串的前面,并盡可能多地獲取。|或者...,*$- 獲得盡可能多的逗號,固定在字符串的后面。
,{2,}- 這會選擇 2 個或更多逗號的所有實例,供您替換為單個逗號。
,選擇一個逗號,只要...{2,}它們之間有 2 到無限數量,彼此相鄰。
祝你好運!
TA貢獻1804條經驗 獲得超2個贊
似乎您真正想做的是使用數組。(因為你似乎正在處理一個實際上是一堆字符串和逗號的字符串)。完成所需操作的一種方法是執行 str.split(","),然后循環檢查 strArray[i].contains("date")。讓我知道我是否應該更清楚
添加回答
舉報
