我在字符串操作方面遇到了一些问题。我的输入中有一些字符串:
<authentication mode="Forms">
<forms loginUrl="MYOTHERSITEURL" />
</authentication>
我需要连接这两个字符串,例如:
var firstString = "Endi Marrei";
var SecondString = "Spain";
我试过了:
Output = "Marrei E. (Spa)";
我如何将西班牙切入第三要素?
即使我的方式有效,你知道更清洁的解决方案吗?
答案 0 :(得分:0)
even though your code is working
..所以我猜,你正在寻找一种更清洁的方式(而不是一个班轮)。简单的建议是不要使用+
运算符来连接字符串和空格。尝试使用String.Format
获取更清晰的代码
var firstString = "Endi Marrei";
var SecondString = "Spain";
var parts = firstString.Split(' ');
var d = String.Format("{0} {1}.", parts[1], parts[0][0].ToString().ToUpper());
var dd = String.Format("({0})", SecondString.Substring(0, 3));
var output = String.Format("{0} {1}", d, dd);
答案 1 :(得分:0)
您的问题是“您知道更清洁的解决方案”。
嗯......我的回答是:
我想你假设每个国家的所有3letterCode都是由国家的前三个字母(如SPAin => SPA
)创建的......依此类推。方法错了,看这里:
http://www.worldatlas.com/aatlas/ctycodes.htm
返回代码:
public class CountriesFactory
{
private static List<Country> _countries = new List<Country>()
{
new Country("Spain", "Spa"),
new Country("Germany", "Ger")
}
public static Country GetCountryByName(string countryName)
{
return _countries.Where(p => p.CountryName == countryName).FirstOrDefault() ?? Country.NONE;
}
}
public class Country
{
public string CountryName { get; private set; }
public string ThreeLetterCode { get; private set; }
public const Country NONE = new Country("", "");
public Country (string countryName, string threeLetterCode)
{
this.CountryName = countryName;
this.ThreeLetterCode = threeLetterCode;
}
}
public class Person
{
public string Name { get; set; }
public string Surname { get; set; }
public Country Country { get; set; }
public override string ToString()
{
return string.Format("{0} {1}. ({2})", Name, Surname[0].ToString(), Country.ThreeLetterCode);
}
}
你应该添加一些条件,但现在并不重要。
在代码中使用:
Person person = new Person()
{
Name = "Endi",
Surname = "Marrei",
Country = CountriesFactory.GetCountryByName("Spain")
}
Console.WriteLine(person.ToString());
以你的例子:
var firstString = "Endi Marrei";
var SecondString = "Spain";
var person = new Person()
{
Name = firstString.Split(' ')[0].ToString(),
Surname = firstString.Split(' ')[1].ToString(),
Country = CountriesFactory.GetCountryByName(SecondString)
}
我认为我的方法将来会更有用。
答案 2 :(得分:0)
你可以使用一个正则表达式,虽然这是一个更清晰的方法是有争议的。
var match = Regex.Match(firstString + " " + secondString, @"(\w)\S*\s+(\w+)\s+(\w{3})");
var output = match.Success
? string.Format("{1} {0}. ({2})",
match.Groups[1], match.Groups[2], match.Groups[3])
: string.Empty;
Console.WriteLine(output);
// output: Marrei E. (Spa)
答案 3 :(得分:-1)
var firstString = "Endi Marrei";
var SecondString = "Spain";
var d = firstString.Split(' ');<br/>
var Output = d[1] + " " + d[0][0] + "." + " " + "(" + SecondString.Substring(0, 3) + ")";
d [0] [0]与firstString [0]相同.ToString();