2013-08-05 126 views
1

我有一個顯示在div內的字段,問題是如果用戶放入一個字符串,並且該字符串的長度不能超過在一個div內部,它基本上延伸到div之外。我怎樣才能在每個單詞'字符串中有多少個字符'中插入一個空格,該字符串具有20個字符或更多的字符,而沒有間隔。例如,現在我做這樣的事情拆分字符串多個字符無空格C#

string words 
Regex.Replace(words, "(.{" + 20 + "})", "$1" + Environment.NewLine); 

但是,這只是在插入每20字符換行符反對序列沒有空格。我對正則表達式並不擅長,所以上面的代碼是我發現的。

回答

1

要使用正則表達式解決這個問題,你可以使用@"(\S{20})"爲你的格局。

\ S將匹配我認爲符合您的條件的任何非空白字符,因爲只有當它在一行中找到20個或更多個非空白字符時它纔會起作用。

使用例子是:

string words = "It should break after \"t\": abcdefghijklmnopqrstuvwxyz"; 
string output = Regex.Replace(words, @"(\S{20})", "$1" + Environment.NewLine); 
+0

那麼,如何改變我在我的問題中的代碼行,正如我說的我不擅長正則表達式:Regex.Replace(words,@「\ S {20}」,「 $ 1「+ Environment.NewLine); – Jake

+0

我已經在示例中添加了一些內容,並澄清了我的第一行,它確實應該有'()'來捕獲與$ 1一起使用的匹配內容。 – Chris

2

CSS解決方案會更好嗎?

word-wrap:break-word;

例如: http://jsfiddle.net/45Fq4/

+1

我知道沒有具體回答這個問題的正則表達式,我只是想,也許這個問題是假設的錯誤的解決方法解決問題。 – JeremyWeir

+0

我會說它回答了第一句話中提到的問題。你只是以一種不同的方式做,但看起來像最好的方式。 – Chris

+0

請不要鏈接[w3schools](http://www.w3fools.com/)。請嘗試[MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/word-wrap)。 – Romoku

0

此代碼爲我工作:

string words 
string outputwords = words; 
int CharsWithoutSpace = 0; 
for (int i = 0; i < outputwords.Length; i++) 
{ 
    if (outputwords[i] == ' ') 
    { 
     CharsWithoutSpace = 0; 
    } 
    else 
    { 
     CharsWithoutSpace++; 
     if (CharsWithoutSpace >= 20) 
     { 
      outputwords = outputwords.Insert(i + 1, Environment.NewLine); 
      CharsWithoutSpace = 0; 
     } 
    } 
} 
Console.WriteLine(outputwords);