C# 删除字符串出现后的文本

C# 删除字符串出现后的文本,c#,regex,linq,string,C#,Regex,Linq,String,我有一个字符串,其格式如下: string sample = "A, ABC, 1, ACS,," 如您所见,有5次出现,字符。 我需要在第4次出现后删除所有内容,以便最终结果为: string result = fx(sample, 4); "A, ABC, 1, ACS" 是否可以不使用foreach的?提前感谢。使用String.Substring方法 您可以这样做: sample.Split(',').Take(4).Aggregate((s1, s2) => s1 + ","

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

string sample = "A, ABC, 1, ACS,,"
如您所见,有5次出现
字符。 我需要在第4次出现后删除所有内容,以便最终结果为:

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

是否可以不使用foreach的
?提前感谢。

使用String.Substring方法


您可以这样做:

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

这将在逗号处拆分字符串,然后仅取前四部分(
“A”
“ABC”
“1”
“ACS”
),使用
聚合将它们合并为一个字符串(结果:
“,A,ABC,1,ACS”
),并返回除第一个字符以外的所有字符。结果:
“A,ABC,1,ACS”

您可以使用字符串。如果在末尾总是两个逗号,则替换


假设如果没有足够的逗号满足计数要求,则要返回完整字符串

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));
    }
String-fx(String-str,Int32-commaCount)
{
if(String.IsNullOrEmpty(str))返回str;
var i=0;
变量strLength=str.长度;
而((commaCount-->0)&&(i!=-1)&(i
如果使用中的
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;
}

最后会不会总是有,,或者它们之间会有什么?LINQ中的字符串拼接。这是hawt。你也可以用Trim(“,”.ToCharArray())语句替换子字符串(删除所有的前导和尾随逗号),或者更简单地说:Trim(“,”)错了,因为我不能编写for或foreach,所以我在问题中指定了它。@Raffaeu你的问题只说了no
foreach
<没有提到
的code>。@Raffaeu:那次否决票不好。你说“没有
foreach
是否可能?”for
不是
foreach
string sample = "A, ABC, 1, ACS,,";
int index = GetNthIndex(sample, ',', 4);
string result = sample.Substring(0, index);