我試圖根據其中存在的特定短語來替換部分字符串。考慮字符串「你好,我的Dg6Us9k,我還活着。」。如何替換Java中的一部分字符串?
我想搜索階段「我的」,並刪除8個字符的權利,這將刪除哈希碼。這給了字符串「你好,我還活着。」我怎樣才能在Java中做到這一點?
我試圖根據其中存在的特定短語來替換部分字符串。考慮字符串「你好,我的Dg6Us9k,我還活着。」。如何替換Java中的一部分字符串?
我想搜索階段「我的」,並刪除8個字符的權利,這將刪除哈希碼。這給了字符串「你好,我還活着。」我怎樣才能在Java中做到這一點?
使用正則表達式這樣也刪除空格:
public static void main(String[] args) {
String s = "Hello my Dg6Us9k. I am alive";
String newString=s.replaceFirst("\\smy\\s\\w{7}", "");
System.out.println(newString);
}
O/P: Hello. I am alive
這應做到:
String s = ("Hello my Dg6Us9k. I am alive");
s.replace(s.substring(s.indexOf("my"), s.indexOf("my")+11),"");
即替換的字符串開始於「我」,是11字符沒事長。
這也適用,感謝您的建議:) – MisterIbbs 2015-02-05 13:48:17
您可以通過string.replaceAll
函數實現此功能。
string.replaceAll("\\bmy.{8}", "");
必要時,添加\\b
。 \\b
稱爲單詞字符和非單詞字符匹配的單詞邊界。 .{8}
完全匹配以下8個字符。
之前my
System.out.println("Hello my Dg6Us9k. I am alive.".replaceAll("\\smy.{8}", ""));
你是什麼意思與「添加\\ b如有必要'?它有什麼作用? – Kahler 2015-02-05 13:33:46
@TheLostMind根據他的預期輸出編輯,但他說我想搜索階段「我的」,並刪除8個字符的權利# – 2015-02-05 13:35:41
@AvinashRaj - 亞......但是一旦我運行該程序,他的預期輸出不同於他* question * :) – TheLostMind 2015-02-05 13:36:31
Java中的字符串是不可改變的,所以你不能變化字符串。你必須創建一個新的字符串。因此,找到「我的」索引i。然後在(0 ... i)之後和(i + 8 ...)之間連接子串。
int i = s.indexOf("my");
if (i == -1) { /* no "my" in there! */ }
string ret = s.substring(0,i);
ret.concat(s.substring(i+2+8));
return ret;
關於不可變的好點。 – Kahler 2015-02-05 13:41:37
如果你想成爲靈活的對哈希碼長,使用正則表達式如下因素:
String foo="Hello my Dg6Us9k. I am alive.";
String bar = foo.replaceFirst("\\smy.*?\\.", ".");
System.out.println(bar);
括號前的w表示會搜索一個單詞嗎? 7是最大長度還是所需長度? – Kahler 2015-02-05 13:36:16
@Kahler - 確切7.w可以匹配'a-zA-Z_' – TheLostMind 2015-02-05 13:36:46
這個工作非常好,謝謝你的建議!但是,它需要在顯示修改後的字符串之前首先傳遞給字符串。 – MisterIbbs 2015-02-05 13:45:43