首页 > 解决方案 > 删除“|”之间的字符串 和“,”在 C# 中的字符串生成器中

问题描述

我在 Windows7 中使用 VS2019。我"|"想删除",".StringBuilder

也就是说,我想StringBuilder

"578.552|0,37.986|317,38.451|356,23"

"578.552,37.986,38.451,23"

我尝试过Substring但失败了,我可以使用什么其他方法来实现这一点?

标签: c#.netstringbuilder

解决方案


如果你有一个巨大 StringBuilder的,这就是为什么将它转换为String并应用正则表达式不是选项,你可以尝试实现有限状态机(FSM):

  StringBuilder source = new StringBuilder("578.552|0,37.986|317,38.451|356,23");

  int state = 0; // 0 - keep character, 1 - discard character
  int index = 0;

  for (int i = 0; i < source.Length; ++i) {
    char c = source[i];

    if (state == 0) 
      if (c == '|')
        state = 1;
      else
        source[index++] = c;
    else if (c == ',') {
      state = 0;
      source[index++] = c;
    }
  }

  source.Length = index;

推荐阅读