我有這個原始字串,我想在原始字串的兩個點之間插入新字串。我是這樣做的,但是有錯誤。
String originalString ="asdASfasdlpe.hereNeedToPutNewString.asdasfdfepw";
String stringForReplace = "NewString";
String new = originalString.replace(originalString.substring(originalString.indexOf(".") 1), stringForReplace);
it gives me: "asdASfasdlpe.NewString"
Result should be: "asdASfasdlpe.NewString.asdasfdfepw"
uj5u.com熱心網友回復:
String originalString ="asdASfasdlpe.hereNeedToPutNewString.asdasfdfepw";
String stringForReplace = "NewString";
String a[]=originalString.split("[.]");
String newString="";
if(a.length==3) {
newString=originalString.replace(a[1], stringForReplace);
}
System.out.println(newString);
或使用三元運算子:
newString=(a.length== 3 ? originalString.replace(a[1], stringForReplace):null);
System.out.println(newString);
uj5u.com熱心網友回復:
一種更短的解??決方案是使用帶有前瞻和后視的正則運算式
String replaced = originalString.replaceAll("(?<=\\.). (?=\\.)", stringForReplace);
uj5u.com熱心網友回復:
您的代碼的問題是由于使用了這段特定的代碼:
originalString.substring(originalString.indexOf(".") 1)
原因是 indexof() 函式只會給出“.”所在的索引。被發現,并且 substring 只會知道從哪里開始獲取子字串,但它不知道從哪里結束它。
試試這個:
String originalString ="asdASfasdlpe.hereNeedToPutNewString.asdasfdfepw";
String stringForReplace = "NewString";
String newString = originalString.replace(originalString.split("[.]", 3)[1], stringForReplace);
System.out.println(newString);
這段代碼中的 split 函式會將整個字串用“.”分隔。 并且您將擁有要替換的字串。
originalString.split("[.]", 3)[1]
uj5u.com熱心網友回復:
您可以嘗試以下方法:
public static void main(String[] args) {
String originalString ="asdASfasdlpe.hereNeedToPutNewString.asdasfdfepw";
String stringForReplace = "NewString";
String newStr = originalString.replaceAll("(?<=\\.).*(?=\\.)", stringForReplace);
//using lookahead and lookbehind regex
String newStr2 = originalString.replaceAll("\\..*\\.", "." stringForReplace ".");
System.out.println(newStr);
System.out.println(newStr2);
}
一個選項使用前瞻和后瞻,如果不支持,您可以選擇不使用它。
輸出:
asdASfasdlpe.NewString.asdasfdfepw
asdASfasdlpe.NewString.asdasfdfepw
uj5u.com熱心網友回復:
干得好:
String new = originalString.replace(originalString.substring(originalString.indexOf(".") 1), stringForReplace) originalString.substring(originalString.indexOf(".",originalString.indexOf(".") 1),originalString.length());
我所做的是將結果字串添加到新字串中。indexOf函式也接受另一個引數,即搜索開始的位置
uj5u.com熱心網友回復:
我會這樣做。
- 從問題來看,您似乎想替換第一次出現,所以使用
replaceFirst (?<=\\.)- 看看斷言背后 - 所以從下面的字符開始(?=\\.)- 前瞻斷言 - 所以在此之前結束.*?- 不情愿的量詞僅限于兩個句點之間的字符。使用*以防您有兩個相鄰的句點,因為字串可能為空。
String s = "first.oldstring.third.fourth.fifth";
String n = "second";
s = s.replaceFirst("(?<=\\.).*?(?=\\.)",n);
System.out.println(s);
印刷
first.second.third.fourth.fifth
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/480297.html
標籤:爪哇
上一篇:如何將數字拆分為剩余部分
下一篇:Boostrap5自動調整列寬
