发生字符串后删除文本
我有一个字符串,具有以下格式:
string sample = "A, ABC, 1, ACS,,"
如你所见,这个角色有5个出现。 我需要在第4次发生后删除所有内容 ,以便最终结果为:
string result = fx(sample, 4); "A, ABC, 1, ACS"
没有foreach
可能吗? 提前致谢。
你可以这样做:
sample.Split(',').Take(4).Aggregate((s1, s2) => s1 + "," + s2).Substring(1);
这将把你的字符串分成逗号,然后只取前四个部分( "A"
, " ABC"
, " 1"
, " ACS"
),将它们连接到一个带有Aggregate
字符串(结果: ",A, ABC, 1, ACS"
)并返回除第一个字符以外的所有内容。 结果: "A, ABC, 1, ACS"
。
使用String.Substring方法
http://msdn.microsoft.com/en-us/library/system.string.substring(v=VS.100).aspx
如果最后总是两个逗号,你可以使用string.replace
如果您使用此问题中的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);
如果没有足够的逗号来满足计数,则假设您要返回完整的字符串
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)); }
- .net框架与scrapy python
- 即使安装和使用了System.IdentityModel.Tokens,也找不到JWTSecurityTokenHandler和SecurityTokenDescriptor
- c#引用inheritance自c的用法b
- Windows.System32文件夹中的Process.Start
- SonarQube 5.2重复键错误
- 如何正确关闭客户端代理(远程主机强行关闭现有连接)?
- Silverlight – LinqToEntities – 如何返回匿名类型
- C#在单独的线程中连接到数据库
- 如何在没有ZipArchive的情况下解压缩Windows 8 Metro中的ZIP文件(zlib.net)