拆分字符串多个字符没有空格C#

时间:2013-08-05 17:40:49

标签: c# regex

我有一个显示在div内部的字段,问题是如果用户输入的字符串长度超过div中可以放在行外的字符数,它就不会断行,它基本上是延伸到div外面。如何在字符串中的每个单词中插入一个空格,其中包含20个字符或更多的字符,且之间没有空格。例如,现在我正在做这样的事情

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

但是,每隔20个字符插入一个换行符,与没有空格的序列相对。对于正则表达式我真的不太好,所以上面的代码是我找到的。

3 个答案:

答案 0 :(得分:2)

CSS解决方案会更好用吗?

word-wrap:break-word;

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

答案 1 :(得分:1)

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

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

示例用法是:

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

答案 2 :(得分: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);