c# - 从字符串中删除字符的问题

标签 c# string methods

我看过很多关于如何使用 C# 处理字符串中的编辑字符的答案。

但是,我需要一个只考虑使用字符串类方法 remove 的回复(也避免使用 stringbuilder)。

这只是为了让我了解这个特定代码的问题所在,它似乎并没有消除电话号码中的中间空格。该代码还会删除任何其他非数字字符。

到目前为止,我一直无法理解为什么不删除空格或两个相邻的空格。我怀疑对同一字符串的 self 分配可能是个问题,但我不确定。

//leave only the digits
for (int i = 0; i < enteredPhone.Length; i++)
{
     switch (enteredPhone[i])
     {
        case '0':
        case '1':
        case '2':
        case '3':
        case '4':
        case '5':
        case '6':
        case '7':
        case '8':
        case '9':
           break;

        default:
             //gets rid of any other type of character
             enterPhone = enteredPhone.Remove(i, 1);
             break;
        }
   }

提前致谢。

最佳答案

尝试在删除字符时减去 1。因为如果去掉第5位和i++的字符,现在i的值为5,循环就找不到下一个字符了。像这样:

default:
         //gets rid of any other type of character
         enterPhone = enteredPhone.Remove(i, 1);
         i--;
         break;

关于c# - 从字符串中删除字符的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21886607/

相关文章:

ruby - 如何引用 Array#delete_if 中元素的索引

c# - TransactionScope 导致阻塞?

c# - 将 C# ASPNET WebApi 对象的属性映射到 Angular 2,

java - 性能 (JAVA) ~ 循环中的字符串连接,带有前置和附加

Java正则表达式用逗号分割字符串但忽略引号和括号

javascript - 如何解决 float 计算

python:如何获取有关函数的信息?

c# - .NET GetHostByAddress 别名只显示 8 个条目

c# - 我将如何同步运行异步 Task<T> 方法?

c++ - 定义结构时是否可以强制字符串为特定大小?