以分号分割的字符串仅获得第二部分

时间:2014-05-12 18:30:45

标签: c#

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

message:action

如何解析此字符串并仅获取第二部分?

行动可能不同,第一部分将始终相同:message:

这是正确的方法吗?

string value="message:action";
string[] result = value.Split(':');
string action = result[1];

7 个答案:

答案 0 :(得分:4)

是的。或者,由于第一部分始终相同,您只需使用子字符串:

value.SubString(8);

答案 1 :(得分:3)

这个解决方案很好,但是它比需要的工作多一点。如果您知道该字符串将始终以"message:"开头,为什么不这样做:

var action = value.Substring(8);

但是,如果:之前的字符串可能会发生变化,但您仍然只关心它后面的内容,那么您可以这样做:

var action = value.Substring(value.IndexOf(':') + 1);

答案 2 :(得分:0)

是的,您的解决方案将有效。但是,如果第一部分始终相同,则另一种可能性是使用Substring作为pswg的答案提及。

答案 3 :(得分:0)

如果您知道字符串将以message:开头,则可以执行此操作:

String value="message:action";
String result = value.Replace("message:","");

答案 4 :(得分:0)

没关系,不过如果您担心内容中有冒号(例如,"消息:动作:执行此操作"):

string value="message:action";
string[] result = value.Split(':');
string action = value.Substring(result[0].Length);

(当然,如果它并非总是以&#34开头;消息:")

答案 5 :(得分:0)

如果你想拥有自我记录的代码,你可以使用正则表达式(所以你以后不会想到这个代码到底是什么,为什么我要采用第二部分)。

string value = "message:action";
string action = Regex.Match(value, "(?<=^message:).*").Value; // will throw exception in case if someday format changes 

答案 6 :(得分:0)

我正在添加一个易读性的答案。到目前为止,该主题中有几个正确答案。

只需提供一个非常易读的替代方案,只需很少的性能成本,请考虑以下因素:

    string value = "message:action";
    string action = value.Split(':').Skip(1);