Java 从字符串中删除大量字符的更简单方法?
我想以最有效的方式从字符串中删除一组字符 现在我只是复制和粘贴一行代码,但必须有一个更有效的方法 我的代码:Java 从字符串中删除大量字符的更简单方法?,java,android,string,Java,Android,String,我想以最有效的方式从字符串中删除一组字符 现在我只是复制和粘贴一行代码,但必须有一个更有效的方法 我的代码: ProductName = ProductName.replace("!", ""); ProductName = ProductName.replace("#", ""); ProductName = ProductName.replace("$", ""); ProductName = ProductName.replace("%", ""); ProductName = Produ
ProductName = ProductName.replace("!", "");
ProductName = ProductName.replace("#", "");
ProductName = ProductName.replace("$", "");
ProductName = ProductName.replace("%", "");
ProductName = ProductName.replace("^", "");
ProductName = ProductName.replace("&", "");
ProductName = ProductName.replace("*", "");
ProductName = ProductName.replace("(", "");
ProductName = ProductName.replace(")", "");
ProductName = ProductName.replace("?", "");
ProductName = ProductName.replace("[", "");
ProductName = ProductName.replace("{", "");
ProductName = ProductName.replace("}", "");
ProductName = ProductName.replace("]", "");
ProductName = ProductName.replace("/", "");
ProductName = ProductName.replace(".", "");
ProductName = ProductName.replace("<", "");
ProductName = ProductName.replace(">", "");
ProductName = ProductName.replace(",", "");
ProductName=ProductName.replace(“!”,”);
ProductName=ProductName。替换(“#”和“”);
ProductName=ProductName。替换(“$”,“”);
ProductName=ProductName。替换(“%”,“”);
ProductName=ProductName。替换(“^”和“);
ProductName=ProductName。替换(&,“”);
ProductName=ProductName。替换(“*”,“”);
ProductName=ProductName.replace(“(”,”);
ProductName=ProductName。替换(“),”);
ProductName=ProductName。替换(“?”,“”);
ProductName=ProductName。替换(“[”,”);
ProductName=ProductName.replace(“{,”);
ProductName=ProductName.replace(“}”和“);
ProductName=ProductName.replace(“]”,“”);
ProductName=ProductName。替换(“/”,“”);
ProductName=ProductName.replace(“.”,“”);
ProductName=ProductName.replace(“,”);
ProductName=ProductName。替换(“,”,“”);
不要使事情过于复杂。现在,试着把重点放在更容易维护的方式上,而不是效率上
一种方法是使用正则表达式,其-例如类似正则表达式的[abc]
表示一个字符,该字符可以是a
b
或c
这里您只需要小心,因为有些字符即使在字符类中也有特殊的含义(如-
,可用于创建字符范围,如a-z
,或]
,仅表示字符类的结尾)。为了避免此类特殊字符出现任何问题,我们可以创建一个区域,在该区域中,所有L字符都应被视为文字(没有特殊含义的字符)。要创建这样的区域,我们可以使用
\Q..\E
(有关它的更多信息,请阅读本节最后一段)
所以你的代码看起来像
String removeThese = "!#$%^&*()?[{}]/.<>,";
ProductName = ProductName.replaceAll("[\\Q"+removeThese +"\\E]", "");
String removeThese=“!#$%^&*()?[{}]/,”;
ProductName=ProductName.replaceAll(“[\\Q”+删除这些内容+“\\E]”,”);
此外,根据Java命名约定,变量应以小写字母开头,因此您的
ProductName
应为ProductName
还要注意,您可以像这样链接调用:
productName = productName.replace("!", "")
.replace("#", "")
.replace("$", "")
.replace("%", "")
.replace("^", "")
.replace("&", "")
.replace("*", "")
.replace("(", "")
.replace(")", "")
.replace("?", "")
.replace("[", "")
.replace("{", "")
.replace("}", "")
.replace("]", "")
.replace("/", "")
.replace(".", "")
.replace("<", "")
.replace(">", "")
.replace(",", "");
productName=productName。替换(“!”,“”)
.替换(“#”和“”)
.替换(“$”,“”)
.替换(“%”,“”)
.替换(“^”,”)
.替换(“&”,”)
.替换(“*”,“”)
.替换(“(”,“”)
.替换(“)”,“”)
.替换(“?”,“”)
.替换(“[”,“”)
.replace(“{,”)
.replace(“}”和“”)
.替换(“]”,“”)
.替换(“/”,“”)
.替换(“.”,“”)
.替换(“,”)
.替换(“,”,”);
这可能是一个解决方案
public class ReplaceDemo {
public static void main(String[] args) {
String[] symbols = {"!", "#", "$","%","^","&","*","?","[", "]", "{", "}", "(", ")", "/", ".", "<",">", ",", };
String ProductName;
for (int i = 0; i<symbols.length ;i++ ) {
ProductName = ProductName.replace(symbols[i], "");
}
}}
公共类替换演示{
公共静态void main(字符串[]args){
字符串[]符号={“!”、“#”、“$”、“%”、“^”、“&”、“*”、“?”、“[”、“]”、“{”、“}”、“(“、”、“/”、“、”、“、”、”、“}”;
字符串名称;
对于(int i=0;iMore-efficient!=代码行数更少…您可以使用进行循环。或者使用正则表达式,如果您需要更少的代码行数。请注意,以小写字母开头变量名是惯例。@Tunaki-true,但在这种情况下,可能有更好的方法,请重新表述您的问题。是吗要求更简单的方法还是更有效的方法?