Android 如何有效地替换一个或多个字符
我有一个用逗号分隔的字符串,如下所示 1,2,4,6,8,11,14,15,16,17,18 此字符串在用户输入时生成。假设用户想要删除任何数字,我必须重新生成没有指定数字的字符串 如果当前字符串为: 1,2,4,6,8,11,14,15,16,17,18 用户想要删除Android 如何有效地替换一个或多个字符,android,string,replace,Android,String,Replace,我有一个用逗号分隔的字符串,如下所示 1,2,4,6,8,11,14,15,16,17,18 此字符串在用户输入时生成。假设用户想要删除任何数字,我必须重新生成没有指定数字的字符串 如果当前字符串为: 1,2,4,6,8,11,14,15,16,17,18 用户想要删除1,最后的字符串必须是: 2,4,6,8,11,14,15,16,17,18 我尝试使用以下代码实现这一点: //String num will be the number to be removed old = tv.get
1
,最后的字符串必须是:
2,4,6,8,11,14,15,16,17,18
我尝试使用以下代码实现这一点:
//String num will be the number to be removed
old = tv.getText().toString(); //old string
newString = old.replace(num+",",""); //will be the new string
这有时可能会起作用,但对于我所展示的上述示例,它肯定不会起作用,如果我尝试删除
1
,它也会删除11
的最后一部分,由于还存在1
您可以首先拆分字符串,并检查您在其中附加的数值是否与将被删除的数值不相等
示例:
String formated = "1,2,4,6,8,11,14,15,16,17,18";
String []s = formated.split(",");
StringBuilder newS = new StringBuilder();
for(String s2 : s)
{
if(!s2.equals("1"))
newS.append(s2 + ",");
}
if(newS.length() >= 1)
newS.deleteCharAt(newS.length() - 1);
System.out.println(newS);
2,4,6,8,11,14,15,16,17,18
结果:
String formated = "1,2,4,6,8,11,14,15,16,17,18";
String []s = formated.split(",");
StringBuilder newS = new StringBuilder();
for(String s2 : s)
{
if(!s2.equals("1"))
newS.append(s2 + ",");
}
if(newS.length() >= 1)
newS.deleteCharAt(newS.length() - 1);
System.out.println(newS);
2,4,6,8,11,14,15,16,17,18
您可以首先拆分
字符串,并检查附加值的数字是否与将被删除的数字不相等
示例:
String formated = "1,2,4,6,8,11,14,15,16,17,18";
String []s = formated.split(",");
StringBuilder newS = new StringBuilder();
for(String s2 : s)
{
if(!s2.equals("1"))
newS.append(s2 + ",");
}
if(newS.length() >= 1)
newS.deleteCharAt(newS.length() - 1);
System.out.println(newS);
2,4,6,8,11,14,15,16,17,18
结果:
String formated = "1,2,4,6,8,11,14,15,16,17,18";
String []s = formated.split(",");
StringBuilder newS = new StringBuilder();
for(String s2 : s)
{
if(!s2.equals("1"))
newS.append(s2 + ",");
}
if(newS.length() >= 1)
newS.deleteCharAt(newS.length() - 1);
System.out.println(newS);
2,4,6,8,11,14,15,16,17,18
您可以首先拆分
字符串,并检查附加值的数字是否与将被删除的数字不相等
示例:
String formated = "1,2,4,6,8,11,14,15,16,17,18";
String []s = formated.split(",");
StringBuilder newS = new StringBuilder();
for(String s2 : s)
{
if(!s2.equals("1"))
newS.append(s2 + ",");
}
if(newS.length() >= 1)
newS.deleteCharAt(newS.length() - 1);
System.out.println(newS);
2,4,6,8,11,14,15,16,17,18
结果:
String formated = "1,2,4,6,8,11,14,15,16,17,18";
String []s = formated.split(",");
StringBuilder newS = new StringBuilder();
for(String s2 : s)
{
if(!s2.equals("1"))
newS.append(s2 + ",");
}
if(newS.length() >= 1)
newS.deleteCharAt(newS.length() - 1);
System.out.println(newS);
2,4,6,8,11,14,15,16,17,18
您可以首先拆分
字符串,并检查附加值的数字是否与将被删除的数字不相等
示例:
String formated = "1,2,4,6,8,11,14,15,16,17,18";
String []s = formated.split(",");
StringBuilder newS = new StringBuilder();
for(String s2 : s)
{
if(!s2.equals("1"))
newS.append(s2 + ",");
}
if(newS.length() >= 1)
newS.deleteCharAt(newS.length() - 1);
System.out.println(newS);
2,4,6,8,11,14,15,16,17,18
结果:
String formated = "1,2,4,6,8,11,14,15,16,17,18";
String []s = formated.split(",");
StringBuilder newS = new StringBuilder();
for(String s2 : s)
{
if(!s2.equals("1"))
newS.append(s2 + ",");
}
if(newS.length() >= 1)
newS.deleteCharAt(newS.length() - 1);
System.out.println(newS);
2,4,6,8,11,14,15,16,17,18
你可以用这个。这是我能想到的最简单的方法:
//String num will be the number to be removed
old=","+tv.getText().toString()+",";//old string commas added to remove trailing entries
newString=old.replace(","+num+",",",");// will be the new string
newString=newString.substring(1,newString.length()-1); // removing the extra commas added
这会对你想做的事情起作用。我在字符串的开头和结尾添加了一个逗号,这样您也可以删除第一个和最后一个条目。您可以使用它。这是我能想到的最简单的方法:
//String num will be the number to be removed
old=","+tv.getText().toString()+",";//old string commas added to remove trailing entries
newString=old.replace(","+num+",",",");// will be the new string
newString=newString.substring(1,newString.length()-1); // removing the extra commas added
static public String removeItemFromCommaDelimitedString(String str, String item)
{
StringBuilder builder = new StringBuilder();
int count = 0;
String [] splits = str.split(",");
for (String s : splits)
{
if (item.equals(s) == false)
{
if (count != 0)
{
builder.append(',');
}
builder.append(s);
count++;
}
}
return builder.toString();
}
这会对你想做的事情起作用。我在字符串的开头和结尾添加了一个逗号,这样您也可以删除第一个和最后一个条目。您可以使用它。这是我能想到的最简单的方法:
//String num will be the number to be removed
old=","+tv.getText().toString()+",";//old string commas added to remove trailing entries
newString=old.replace(","+num+",",",");// will be the new string
newString=newString.substring(1,newString.length()-1); // removing the extra commas added
static public String removeItemFromCommaDelimitedString(String str, String item)
{
StringBuilder builder = new StringBuilder();
int count = 0;
String [] splits = str.split(",");
for (String s : splits)
{
if (item.equals(s) == false)
{
if (count != 0)
{
builder.append(',');
}
builder.append(s);
count++;
}
}
return builder.toString();
}
这会对你想做的事情起作用。我在字符串的开头和结尾添加了一个逗号,这样您也可以删除第一个和最后一个条目。您可以使用它。这是我能想到的最简单的方法:
//String num will be the number to be removed
old=","+tv.getText().toString()+",";//old string commas added to remove trailing entries
newString=old.replace(","+num+",",",");// will be the new string
newString=newString.substring(1,newString.length()-1); // removing the extra commas added
static public String removeItemFromCommaDelimitedString(String str, String item)
{
StringBuilder builder = new StringBuilder();
int count = 0;
String [] splits = str.split(",");
for (String s : splits)
{
if (item.equals(s) == false)
{
if (count != 0)
{
builder.append(',');
}
builder.append(s);
count++;
}
}
return builder.toString();
}
这会对你想做的事情起作用。我在字符串的开头和结尾添加了逗号,这样您也可以删除第一个和最后一个条目。正如您所注意到的,简单的字符替换很难做到这一点。相反,将各个数字分开,并在该级别上工作。然后将数字再次组合成字符串形式。正如您所注意到的,用简单的字符替换是很困难的。相反,将各个数字分开,并在该级别上工作。然后将数字再次组合成字符串形式。正如您所注意到的,用简单的字符替换是很困难的。相反,将各个数字分开,并在该级别上工作。然后将数字再次组合成字符串形式。正如您所注意到的,用简单的字符替换是很困难的。相反,将各个数字分开,并在该级别上工作。然后将这些数字再次组合成字符串形式。如果要删除“18”(字符串中的最后一项),您的解决方案将生成一个带有尾随逗号的字符串。@selbie nice catch,Edited以删除最后一个逗号如果您有另一个小错误。如果原始字符串仅包含单个项,并且该项被删除,则将调用deleteCharAt(-1)。我认为这会引发一个异常…@selbie ya,但我认为用户不会有少于1个的输入再次被很好地编辑。规则#1-假设所有来自yoru代码外部的输入都是恶意尝试使程序崩溃。如果你想删除“18”(字符串中的最后一项),您的解决方案将生成一个带有尾随逗号的字符串。@selbie nice catch,编辑为删除最后一个逗号。如果您有另一个小错误。如果原始字符串仅包含单个项,并且该项被删除,则将调用deleteCharAt(-1)。我认为这会引发一个异常…@selbie ya,但我认为用户不会有少于1个的输入再次被很好地编辑。规则#1-假设所有来自yoru代码外部的输入都是恶意尝试使程序崩溃。如果你想删除“18”(字符串中的最后一项),您的解决方案将生成一个带有尾随逗号的字符串。@selbie nice catch,编辑为删除最后一个逗号。如果您有另一个小错误。如果原始字符串仅包含单个项,并且该项被删除,则将调用deleteCharAt(-1)。我认为这会引发一个异常…@selbie ya,但我认为用户不会有少于1个的输入再次被很好地编辑。规则#1-假设所有来自yoru代码外部的输入都是恶意尝试使程序崩溃。如果你想删除“18”(字符串中的最后一项),您的解决方案将生成一个带有尾随逗号的字符串。@selbie nice catch,编辑为删除最后一个逗号。如果您有另一个小错误。如果原始字符串仅包含单个项,并且该项被删除,则将调用deleteCharAt(-1)。我认为这会引发一个异常…@selbie ya,但我认为用户不会有少于1个的输入哦,再次经过良好编辑。规则#1-假设所有来自YRU代码外部的输入都是恶意尝试使程序崩溃。这可能是最简单的想法!!!我认为这个方法比将字符串拆分为数组然后在数组中搜索更好!!谢谢你的想法,它的逻辑也有一些问题:)所以我用前面的空格分隔数字,并试图替换它。。它起作用了perfectly@Shan你能告诉我你遇到的问题吗?@4aRkKn1gh7哎呀,我想不起确切的问题了,但我记得:当我尝试t
static public String removeItemFromCommaDelimitedString(String str, String item)
{
StringBuilder builder = new StringBuilder();
int count = 0;
String [] splits = str.split(",");
for (String s : splits)
{
if (item.equals(s) == false)
{
if (count != 0)
{
builder.append(',');
}
builder.append(s);
count++;
}
}
return builder.toString();
}