C#中的线条处理

时间:2016-06-19 14:57:25

标签: c# html-agility-pack

我在字符串操作方面遇到了一些问题。我的输入中有一些字符串:

<authentication mode="Forms">
   <forms loginUrl="MYOTHERSITEURL" />
</authentication>

我需要连接这两个字符串,例如:

var firstString = "Endi Marrei";
var SecondString = "Spain";

我试过了:

Output  =  "Marrei E. (Spa)";

我如何将西班牙切入第三要素?

即使我的方式有效,你知道更清洁的解决方案吗?

4 个答案:

答案 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)

Demo.

答案 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();