2012-03-30 67 views
-1

我在C#中有一个代码,并且必须打印一个带有卖家名称的标签,但是我遇到了问题。 标签中的每一行符合20个字母,我有2行来放这个名字。在C中操纵字符串#

我需要在2行中安排卖方的名称,不要使用切词。

例如 - 名称:JOSE MAURICIO BERTOLOTO门德斯

线路1:JOSE MAURICIO

线路2:BERTOLOTO门德斯

有人知道我是怎样做到这一点? 感谢


编辑:基于的答案,我implemente此代码:

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); 

感谢您的帮助!

+1

如果第二行会超过20个字符会怎么样? – 2012-03-30 20:05:19

+0

左或右对齐:) – 2012-03-30 20:06:18

+0

詹姆斯:随着第二行将是> 20个字符,我不得不削减额外的信件。 – JohnyMoraes 2012-03-30 20:08:25

回答

5

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

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

0

我不确定,但我认为你可以使用特殊字符:'\ n'(不含引号) 它的basiclly代表新行。例如:JOSE MAURICIO BERTOLOTO MENDES将成为JOSE MAURICIO \ n BERTOLOTO MENDES。

2

您可以将全名分成它的各个部分。

var names = fullname.Split(' '); 

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

1

这是逻辑。

使用String.split将名称拆分为数组。迭代数组中的字符串,将它们连接成一行,而行少于20个字符。递归函数将是一个好主意!当你多于两行时,删除其余的名称。

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行。