大括号c#分割问题
本文关键字:分割 问题 | 更新日期: 2023-09-27 18:16:33
我有一个字符串,email
和id
,格式如下:
string s = "{email:ss@ss.com}{id:AB12345}";
我只是想删除花括号,并从上面的字符串中提取电子邮件和id的变量,如下所示。
string email = "ss@ss.com";
string id = "AB12345";
我已经尝试了string.Format
和其他格式。由于电子邮件和id的大小可以变化,我找不到一个解决方案。
可以使用正则表达式
var match = Regex.Match("{email:ss@ss.com}{id:AB12345}", @"'{email:(.+)'}'{id:(.+)'}");
var email = match.Groups[1].Value;
var id = match.Groups[2].Value;
PS:模式(.+)
意味着Email和Id至少有1个字符,否则匹配将无法找到Email和Id,如果这些可以为空,您可以将其更改为(.*)
使用Split
,您可以这样实现:
var parts = s.Split(new [] { '{', '}' }, StringSplitOptions.RemoveEmptyEntries);
string email = parts[0].Split(':')[1];
string id = parts[1].Split(':')[1];
Regex将是一个很好的解决方案,但由于我不熟悉它,你可以使用Substring
和IndexOf
方法,如;
string s = "{email:ss@ss.com}{id:AB12345}";
string email = s.Substring(s.IndexOf(':') + 1,
s.IndexOf('}') - s.IndexOf(':') - 1); // ss@ss.com
s = s.Substring(s.IndexOf('}') + 1);
string id = s.Substring(s.IndexOf(':') + 1,
s.IndexOf('}') - s.IndexOf(':') - 1); // AB12345
这里 demonstration
。
private static void Main(string[] args)
{
string s = "{email:ss@ss.com}{id:AB12345}";
string email = string.Empty;
string id = string.Empty;
FillValue(s, out email, out id);
Console.WriteLine("email:{0}'nid:{1}",email,id);
Console.ReadKey();
}
private static void FillValue(string s, out string email, out string id)
{
var values = s.Replace("}{", "$").Replace("{",string.Empty).Replace("}",string.Empty).Split('$');
email = values[0].Split(':')[1];
id = values[1].Split(':')[1];
}
string s = "{email:ss@ss.com}{id:AB12345}";
string[] str = s.Split("}{".ToArray());
string email = str[1].Replace("email:", "");
string id = str[3].Replace("id:", "");