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
從字面上查找單詞date
orDate
。
^,*|,*$
- 這會選擇要處理的前導和尾隨逗號。
^,*
- 將逗號錨定在字符串的前面,并盡可能多地獲取。|
或者...,*$
- 獲得盡可能多的逗號,固定在字符串的后面。
,{2,}
- 這會選擇 2 個或更多逗號的所有實例,供您替換為單個逗號。
,
選擇一個逗號,只要...{2,}
它們之間有 2 到無限數量,彼此相鄰。
祝你好運!

TA貢獻1804條經驗 獲得超2個贊
似乎您真正想做的是使用數組。(因為你似乎正在處理一個實際上是一堆字符串和逗號的字符串)。完成所需操作的一種方法是執行 str.split(","),然后循環檢查 strArray[i].contains("date")。讓我知道我是否應該更清楚
添加回答
舉報