2012-03-30 73 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行。