我有一个以下格式的字符串:
message:action
如何解析此字符串并仅获取第二部分?
行动可能不同,第一部分将始终相同:message:
这是正确的方法吗?
string value="message:action";
string[] result = value.Split(':');
string action = result[1];
答案 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);