Java 滤波算法故障 公共静态字符串过滤器phoneNumber(字符串电话号码){ Character[]characters=新字符[phoneNumber.length()]; 如果(字符长度>9) { for(int i=0;i
我试图过滤数字中的空字符,但是当在字符串中发现2个或更多空字符时,它只删除第一个 您的问题是在for循环中增加了Java 滤波算法故障 公共静态字符串过滤器phoneNumber(字符串电话号码){ Character[]characters=新字符[phoneNumber.length()]; 如果(字符长度>9) { for(int i=0;i,java,arrays,filter,Java,Arrays,Filter,我试图过滤数字中的空字符,但是当在字符串中发现2个或更多空字符时,它只删除第一个 您的问题是在for循环中增加了i,当您找到一个空格时,就会跳过它。在下一个循环中设置字符中的数字时,跳过了一个条目。您必须使用两个步进变量,一个用于步进电话号码,另一个用于字符 看起来您想返回一个过滤电话号码,但正在返回您发送的值 您可以使用字符串上的搜索和替换方法 public static String filterPhoneNumber(String phoneNumber) { Character
i
,当您找到一个空格时,就会跳过它。在下一个循环中设置字符中的数字时,跳过了一个条目。您必须使用两个步进变量,一个用于步进电话号码
,另一个用于字符
看起来您想返回一个过滤电话号码,但正在返回您发送的值
您可以使用字符串上的搜索和替换方法
public static String filterPhoneNumber(String phoneNumber) {
Character[] characters = new Character[phoneNumber.length()];
if (characters.length > 9)
{
for (int i = 0; i < characters.length; i++)
{
if (characters[i] != ' ')
{
characters[i] = phoneNumber.charAt(i);
} else
{
Log.d("asd", "wrroooonggggggggg");
}
}
}
return phoneNumber;
}
下面是它的用法:如果您使用
public static String filterPhoneNumber(String phoneNumber) {
return phoneNumber.replaceAll(" ","");
}
它起作用了
字符数组的类型应为char[]
字符数组从未初始化,因此characters[i]!=''
始终为true(如果您修复了数组类型,则else应抛出NullPointerException
)
您分配了characters[i]=phoneNumber.charAt(i)
,但之后再也没有读过
如果您的目标是删除空间,请执行以下操作:
char[] characters = new char[phoneNumber.length()];
工作100%
public static String filterPhoneNumber(String phoneNumber) {
return phoneNumber.replaceAll(" ", "");
}
公共静态字符串过滤器phoneNumber(字符串电话号码){
byte[]number=phoneNumber.getBytes();
字节[]数组=新字节[phoneNumber.length()];
整数计数=0;
for(int i=0;i
算法会产生关键的调用错误
请解释。我想你想要I
…我无法想象它是如何使用的他们!很高兴了解runnable.com。我第一次看到它。我投你的票:)没用。第一个空格被删除了,但第二个空格和其他空格被删除了。新的问题是当字符串中有两个或更多空字符时,它只删除第一个。为什么不建议他使用正则表达式而不是迭代来理解他做错了什么。因为他的代码中的变量“i”不应该以与他递增arg字符串相同的步幅递增。这就是为什么我把“计数”放在我的代码中,我们应该努力遵守最佳实践,而不是跟随别人。他迭代一个数组来替换空间,我们可以使用正则表达式。
public static String filterPhoneNumber(String phoneNumber) {
byte[] number = phoneNumber.getBytes();
byte[] array = new byte[phoneNumber.length()];
int count=0;
for (int i = 0; i < number.length; i++){
if (number[i] != ' '){
array[count++] = number[i];
}
}
return new String(array);
}
public static void main(String[] args) {
String res = filterPhoneNumber(" +28 23");
System.out.println(res); //OUTPUT "+2823"
}