1

我有一个显示在 div 内的字段,问题是如果用户输入的字符串长于 div 内的行外可以容纳的字符数,它不会换行,它基本上延伸到外面分区。如何在每个单词“thats in a string”中插入一个空格,该单词的序列为 20 个或更多字符,而 . 例如,现在我正在做这样的事情

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

但这只是在与没有空格的序列相对的每 20 个字符处插入一个换行符。我真的不太擅长正则表达式,所以上面的代码是我发现的。

4

3 回答 3

2

CSS 解决方案会更好吗?

word-wrap:break-word;

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

于 2013-08-05T17:44:03.773 回答
1

要使用正则表达式解决此问题,您可以将@"(\S{20})"其用作您的模式。

\S 将匹配我认为符合您的标准的任何非空白字符,因为它只有在连续找到 20 个或更多非空白字符时才会起作用。

示例用法是:

string words = "It should break after \"t\": abcdefghijklmnopqrstuvwxyz";
string output = Regex.Replace(words, @"(\S{20})", "$1" + Environment.NewLine);
于 2013-08-05T17:49:40.487 回答
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);
于 2013-08-05T18:00:48.217 回答