帮助进行字符串解析
本文关键字:字符串 帮助 | 更新日期: 2023-09-27 18:02:21
我试图解析字符串,看看":"之后的值是否为整数。如果不是整数,则从string中删除"Test:M"。
这是我的示例字符串。
string testString = "Test:34,Test:M";
结果我需要testString = "Test:34"
string[] data = testString.Split(',');
for (int i = 0; i < data.Length; i++)
{
string[] data1 = data[i].Split(':');
int num = 0;
if(Int32.TryParse(data1[1], out num))
{
}
}
你就快成功了。试试这样:
var builder = new StringBuilder();
string[] data = testString.Split(',');
for (int i = 0; i < data.Length; i++)
{
string[] data1 = data[i].Split(':');
int num = 0;
if(Int32.TryParse(data1[1], out num))
{
builder.Append(data[i]);
buidler.Append(',');
}
}
testString = builder.ToString();
EDIT:添加","
以保留输出中的逗号…
EDIT:参考@Groo关于避免隐式字符串连接的建议
你可以继续使用循环结构,但我个人更喜欢LINQ的外观:
var dummy = 0;
var intStrings =
testString.Split(',')
.Where(s => s.Contains(":") && int.TryParse(s.Split(':')[1], out dummy))
.ToArray();
var result = String.Join(",", intStrings);
您可以使用所需的值构建一个新的集合…
string testString = "Test:34,Test:M, 23:test";
int temp = default( int );
var integerLines = from line in testString.Split( ',' )
let value = line.Split( ':' ).ElementAt( 1 )
let isInteger = Int32.TryParse( value, out temp )
where isInteger
select line;
string testString = "Test:34,Test:M,Crocoduck:55";
string[] data = testString.Split(',');
for (int i = 0; i < data.Length; i++)
{
string s = data[i].Remove(0, data[i].IndexOf(':') + 1);
int num;
if (Int32.TryParse(s, out num))
{
Console.WriteLine(num);
}
}
我应该提醒你,我手头没有编码工具,所以不能提供给你明确可编译的代码,但在不同的其他我建议使用Split(string[]),例如:Split(new string[]{",",":"}),并避免调用Split 2次。在此之后,您将清楚地看到数组的哪些索引是整数。在你的例子中,它应该是每N*3。顺便说一下,你需要测试一下。
希望对你有帮助。
问候。