Java 在字符串ArrayList中查找并替换
你可以编译一个Java 在字符串ArrayList中查找并替换,java,Java,你可以编译一个 Pattern p=Pattern.compile(“,”); 对于(int-loopIndex2=0;loopIndex2
Pattern p=Pattern.compile(“,”);
对于(int-loopIndex2=0;loopIndex2
您可以编译一个
Pattern p=Pattern.compile(“,”);
对于(int-loopIndex2=0;loopIndex2
有多种方法可以改善这一点。当然,您需要决定您可以做哪些权衡:
if(!contents.contains(“,”){next;}
This循环
通过你的琴弦,对于小琴弦来说还不错。如果
字符串很小,您也可以自己扫描字符串并替换
“就地”(不是真正就地,因为字符串是不可变的,所以您需要创建一个新字符串,但您知道了)当然,您需要在所有情况下进行测试以验证。如果您的数据集非常小,并且没有真正的需求,那么就编写最简单、最直观的代码 有多种方法可以改善这一点。当然,您需要决定您可以做哪些权衡:
if(!contents.contains(“,”){next;}
This循环
通过你的琴弦,对于小琴弦来说还不错。如果
字符串很小,您也可以自己扫描字符串并替换
“就地”(不是真正就地,因为字符串是不可变的,所以您需要创建一个新字符串,但您知道了)当然,您需要在所有情况下进行测试以验证。如果您的数据集非常小,并且没有真正的需求,那么就编写最简单、最直观的代码 如果您想用另一个字符替换一个字符,那么一个改进可以是使用
replace(',','Q')
而不是replaceAll(“,”,“Q”)
,这将不必要地涉及正则表达式引擎。同样,也不需要像loopIndex2
那样命名循环索引,简单的i
就足够了。“有没有可能优化上面的代码?”如果你的代码有效,那么你应该问这个问题。不可变对象的列表不能更新,除非使用“获取更改集”范例Laune,因此如果我们使用StringBuilder而不是字符串,我们可能可以内联地进行更新?因此,可能需要将方法参数更改为ArrayList arrLst。不确定它是否有效。让我试试。StringBuilder
没有替换方法,因此即使您将列表设置为通用的StringBuilder
,您仍然需要将其转换为String
。如果您想用一个字符替换另一个字符,那么一个改进可以是使用replace(','Q')
而不是replaceAll(,,“,,,,'Q')
这将不必要地涉及正则表达式引擎。同样,也不需要像loopIndex2
那样命名循环索引,简单的i
就足够了。“有没有可能优化上面的代码?”如果你的代码有效,那么你应该问这个问题。不可变对象的列表不能更新,除非使用“获取更改集”范例Laune,因此如果我们使用StringBuilder而不是字符串,我们可能可以内联地进行更新?因此,可能需要将方法参数更改为ArrayList arrLst。不确定它是否有效。让我试试。StringBuilder
没有替换方法,因此即使您将列表设置为通用的StringBuilder
,您仍然需要将其转换为String
@MaheshaPadyana,我相信是这样的,但这可能取决于您的平台和版本。@ElliottFrisch:replaceAll就是这样做的。所以我认为没有difference@Cratylus是的,但它会在每次循环迭代中编译模式,这会编译模式一次。@MaheshaPadyana我相信是的,但这可能取决于您的平台和版本。@ElliottFrisch:replaceAll就是这样做的。所以我认为没有difference@Cratylus是的,但是它在每个循环迭代中编译模式,这会编译模式一次。
public static int preaparePatternForJFugue(ArrayList <String> arrLst) {
String contents;
for(int loopIndex2=0;loopIndex2<arrLst.size();loopIndex2++) {
contents=arrLst.get(loopIndex2);
contents=contents.replaceAll(",", "Q");
arrLst.set(loopIndex2, contents);
}
}
arrLst.set(loopIndex2, arrLst.get(loopIndex2).replaceAll(",", "Q"));
Pattern p = Pattern.compile(",");
for (int loopIndex2 = 0; loopIndex2 < arrLst.size(); loopIndex2++) {
Matcher matcher = p.matcher(arrLst.get(loopIndex2));
arrLst.set(loopIndex2, matcher.replaceAll("Q"));
}