【问题标题】:Remove text after a string occurrence字符串出现后删除文本
【发布时间】:2011-02-23 14:13:17
【问题描述】:

我有一个格式如下的字符串:

string sample = "A, ABC, 1, ACS,,"

如您所见,, 字符出现了 5 次。 我需要在第 4 次出现后删除 所有内容,以便最终结果为:

string result = fx(sample, 4);
"A, ABC, 1, ACS"

没有foreach 可以吗?提前致谢。

【问题讨论】:

  • 最后会不会有 ,, 或者它们之间有什么关系?

标签: c# regex linq string


【解决方案1】:

你可以这样做:

sample.Split(',').Take(4).Aggregate((s1, s2) => s1 + "," + s2).Substring(1);

这将在逗号处分割你的字符串,然后只取前四个部分("A"" ABC"" 1"" ACS"),用Aggregate将它们连接到一个字符串(结果:@ 987654327@) 并返回除第一个字符之外的所有内容。结果:"A, ABC, 1, ACS"

【讨论】:

  • LINQ 中的字符串拼接。这是轴。
  • 您也可以用 Trim(",".ToCharArray()) 语句替换子字符串(删除所有前导和尾随逗号)
  • 或者,更简洁:Trim(',')
【解决方案2】:
【解决方案3】:

如果结尾总是两个逗号,则可以使用 string.replace

http://msdn.microsoft.com/en-us/library/fk49wtc1.aspx

【讨论】:

    【解决方案4】:

    如果你使用this question中的GetNthIndex方法,你可以使用String.Substring

    public int GetNthIndex(string s, char t, int n)
    {
        int count = 0;
        for (int i = 0; i < s.Length; i++)
        {
            if (s[i] == t)
            {
                count++;
                if (count == n)
                {
                    return i;
                }
            }
        }
        return -1;
    }
    

    因此您可以执行以下操作:

    string sample = "A, ABC, 1, ACS,,";
    int index = GetNthIndex(sample, ',', 4);
    string result = sample.Substring(0, index);
    

    【讨论】:

    • 错了,因为我不能写for或foreach,我在问题中指定了。
    • @Raffaeu 你的问题只说不foreach; for 没有被提及。
    • @Raffaeu:那次投票不太好。您说“没有foreach 有可能吗?” for 不是 foreach
    【解决方案5】:

    假设如果没有足够的逗号来满足计数,您想返回完整的字符串

    String fx(String str, Int32 commaCount) 
        {
            if (String.IsNullOrEmpty(str)) return str;
            var i = 0;
            var strLength = str.Length;
            while ((commaCount-- > 0) && (i != -1) && (i < strLength)) i = str.IndexOf(",", i + 1);
            return (i == -1 ? str : str.Substring(i));
        }
    

    【讨论】:

      猜你喜欢
      • 2011-08-25
      • 1970-01-01
      • 2012-06-05
      • 2019-01-22
      • 2021-12-10
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多