在c#中选择连字符之前和星号之后的特定字符串
本文关键字:之后 字符串 选择 连字符 | 更新日期: 2023-09-27 17:50:52
我想从字符串中取出三个字符串,例如Vks - Vks * Son
txtName.Text = objDoctor.DocName.Substring(0, objDoctor.DocName.IndexOf("-")).Trim();
我已成功获得第一部分,即
txtMidName.Text = objDoctor.DocName.Substring(1, objDoctor.DocName.IndexOf("-")).Trim();
txtLastName.Text = objDoctor.DocName.Substring(0,objDoctor.DocName.LastIndexOf("*")).Trim();
注意:Vks - Vks * Son
的第二部分是MidName,第三部分是Son is The Last Name
一定要看看这个:
Name = Name.Trim();
arrNames = Name.Split(' ', '-' , '*');
if (arrNames.Length > 0) {
GivenName = arrNames[0];
}
if (arrNames.Length > 1) {
FamilyName = arrNames[arrNames.Length - 1];
}
if (arrNames.Length > 2) {
MiddleName = string.Join(" ", arrNames, 1, arrNames.Length - 2);
}
真的会帮助别人
直接使用string.Split
:
var parts = objDoctor.DocName.Split('-', '*');
txtName.Text = parts[0];
txtMidName.Text = parts[1];
txtLastName.Text = parts[2];
请注意,如果字符串不包含至少三个部分,则会抛出异常。
使用字符串。分割方法。我还假设你想把空格也去掉?
String data = "Vks - Vks * Son";
String[] pieces = (from piece in data.Split(new char[]{'-', '*'}, StringSplitOptions.RemoveEmptyEntries)
select piece.Trim()).ToArray();
Console.WriteLine(pieces[0]);
Console.WriteLine(pieces[1]);
Console.WriteLine(pieces[2]);
所以我使用了一点LINQ来帮助在字符串被分割后修剪掉它们之间的空格。
这将在命令行上给出以下结果:
Vks
Vks
Son
我会使用正则表达式来解析这样的字符串。
但是当然有一个学习曲线。但一旦掌握了,就容易多了。这里是另一个选项:
string parse = "Vks - Vks * Son";
string pattern = @"(?'first''w*)'s*-'s*(?'second''w*)'s*'*'s*(?'last''w*)";
Match m = Regex.Match(parse, pattern);
if (m.Success)
{
Console.WriteLine(m.Groups["first"].Value);
Console.WriteLine(m.Groups["second"].Value);
Console.WriteLine(m.Groups["last"].Value);
}
模式的快速解释:
我们将字符串分成3部分:第一,第二和最后。
一个单词(0个或多个字符)是'w* -如果至少需要一个字符,则使用'w+
's*-'s*是空格(0个或多个空白字符),后面跟着'-',然后是空格(还是0个或多个空白字符)。
's*'*'s* -因为'*'是一个特殊字符,我们必须对它进行转义。
希望对你有帮助。
双相障碍