在C#中操作字符串

时间:2012-03-30 20:01:21

标签: c# string

我在C#中有一个代码,并且必须打印一个带有卖家名字的标签,但我有一个问题。 标签中的每一行都包含20个字母,我有2行代表这个名字。

我需要在两行中排列卖家的名字,而不是切词。

例如 - 姓名:JOSE MAURICIO BERTOLOTO MENDES

第1行:JOSE MAURICIO

第2行:BERTOLOTO MENDES

有人知道我是怎么做到的吗? 感谢


编辑:根据答案,我实现了这段代码:

string[] SellerPrint = Seller.Split(' ');
Line1 = "";
Line2 = "";
foreach (string name in SellerPrint )
{
     if (Line1.Length <= 20)
     {
          if ((Line1 + name).Length <= 20)
               Line1 += (Line1.Length == 0) ? name : " " + name;
          else
               break;
     }
}
Line2 = (Seller.Replace(Line1, "").Length <= 20) ? Seller.Replace(Line1+ " ", "") : Seller.Replace(Line1+ " ", "").Remove(20);

感谢您的帮助!

5 个答案:

答案 0 :(得分:5)

您可以使用string.Split()简单地将字符串拆分为单词,然后添加到每个单词中,只要它足够小就可以添加到该行中。

我也不会使用字符数,而是使用Graphics.MeasureString()

答案 1 :(得分:2)

您可以将全名拆分为其各个部分。

var names = fullname.Split(' ');

哪个会给你一个字符串[]。从那里你可以通过查看每个字符串的长度来进行数学计算。

答案 2 :(得分:2)

您的想法是,您希望附加名称的所有部分,直到您达到或超过下一个令牌的20个字符限制。当发生这种情况时,添加一个带有该标记的新行并继续追加,直到再次达到字符限制为止。

这是一个简单的例子:

public static string FormatName(string name)
{
    const int MaxLength = 20;

    if (string.IsNullOrEmpty(name))
        throw new ArgumentNullException("name");
    if (name.Length <= MaxLength)
        return name;

    string[] tokens = name.Split(' ');
    if (tokens.Length == 0)
        return name; //hyphen the name?

    StringBuilder sb = new StringBuilder(name.Length);

    int len = 0;
    foreach (string token in tokens)
    {
        if (token.Length + len < MaxLength)
        {
            sb.Append(token + " ");
            len += token.Length;
        }
        else
        {
            sb.Append(Environment.NewLine + token + " ");
            len = 0;
        }
    }
    return sb.ToString();
}

注意:当名称的一部分没有空格超过20个字符时,我将案例打开了。此外,如果名称不适合两行,此示例将继续到第N行。

答案 3 :(得分:1)

这是逻辑。

使用String.split将名称拆分为数组。迭代数组中的字符串,将它们连成一行,而该行少于20个字符。递归函数是个好主意!如果您的行数超过两行,则删除其余的名称。

答案 4 :(得分:0)

我不确定,但我认为你可以使用一个特殊字符:&#39; \ n&#39; (没有报价) 它基本上代表新线。例如:JOSE MAURICIO BERTOLOTO MENDES将成为JOSE MAURICIO \ n BERTOLOTO MENDES。

相关问题