欲更換一個字,其中包含具有相同的字(#略)爪哇正則表達式到在一定的字符串替換的圖案
例如
「WORD1 WORD2設置一串字,從第#用戶「應替換爲」word1 word2 user「
有人可以幫我嗎?
欲更換一個字,其中包含具有相同的字(#略)爪哇正則表達式到在一定的字符串替換的圖案
例如
「WORD1 WORD2設置一串字,從第#用戶「應替換爲」word1 word2 user「
有人可以幫我嗎?
您可以使用正則表達式。讓我們用
yourText = yourText.replaceAll("#(\\S+)", "$1");
在正則表達式的開始:
\S
表示任何非空白字符+
表示一個或多個\S+
表示一個或多個非空白字符(\S+)
-parenthesis create group containsi納克的一個或多個非空白字符,該基團將在替換被索引爲1
$1
允許我們使用組1的內容在其它它會嘗試找到#non-whitespaces
(它將替換爲non-whitespaces
部分。
但是這個解決方案並不需要#
作爲單詞的開頭。要做到這一點,我們可以檢查是否#
之前有
\s
,串^
的要測試是否在我們的元素之前沒有實際包含它在我們的匹配中,我們可以使用後視(?<=...)
。
因此,我們的最終解決方案可以像
yourText = yourText.replaceAll("(?<=^|\\s)#(\\S+)", "$1");
完美工作。謝謝。 –
@IsurangaPerera我更新了這個答案來解決一個問題。檢查更新的版本。 – Pshemo
String foo = "#user"
foo = foo.replaceAll("#", "");
您還沒有很明確的使用情況,但我的代碼示例假設:
忽略第一個符號與子串函數
公共類TestRegex {
public static void main(String[] args) {
String omitInStart = "#user";
String omitInMiddle = "#user";
String omitInEnd = "#user";
String omitFewSymbols = "#us#er";
List<String> listForOmit = Arrays.asList(omitInStart, omitInMiddle, omitInEnd, omitFewSymbols);
listForOmit.forEach(e -> System.out.println(omitWithReplace(e)));
listForOmit.forEach(e -> System.out.println(omitFirstSymbol(e)));
}
private static String omitFirstSymbol(String stringForOmit) {
return stringForOmit.substring(1);
}
private static String omitWithReplace(String stringForOmit) {
String symbolForOmit = "#";
return stringForOmit.replaceAll(symbolForOmit, "");
}
}
是您的串像'#user'或類似'#user #word #anotherWord ...'? – SantiBailors
你只是想刪除#附加到一個字符串? – sadlyblue