C# 用于查找未中断文本并插入空格的正则表达式
我正在建立一个论坛,目前正在测试阶段。用户已经开始利用某些东西,比如发布没有空格的长文本字符串,这会拉伸屏幕并破坏一些样式。我刚开始使用这段代码,它工作得很好C# 用于查找未中断文本并插入空格的正则表达式,c#,asp.net-mvc,regex,C#,Asp.net Mvc,Regex,我正在建立一个论坛,目前正在测试阶段。用户已经开始利用某些东西,比如发布没有空格的长文本字符串,这会拉伸屏幕并破坏一些样式。我刚开始使用这段代码,它工作得很好 int charIndex = 0; int noSpaceCount = 0; foreach (char c in text.ToCharArray()) { if (c != ' ') noSpaceCount++
int charIndex = 0;
int noSpaceCount = 0;
foreach (char c in text.ToCharArray())
{
if (c != ' ')
noSpaceCount++;
else
noSpaceCount = 0;
if (noSpaceCount > 150)
{
text = text.Insert(charIndex, " ");
noSpaceCount = 0;
}
charIndex++;
}
这段代码可以工作,但如果可能的话,我更喜欢正则表达式。问题是,我将使用正则表达式来识别链接,我不想用空格打断长链接,因为这些将通过使链接显示文本缩写来修复。因此,我不想在一段标识为URL的文本中插入空格,但我确实希望每150个字符插入一个空格,该空格是连续的、非链接的文本
有什么建议吗?这太复杂了。感谢Eric和同事提供了很棒的.NET正则表达式库
resultString = Regex.Replace(subjectString,
@"(?<= # Assert that the current position follows...
\s # a whitespace character
| # or
^ # the start of the string
| # or
\G # the end of the previous match.
) # End of lookbehind assertion
(?!(?:ht|f)tps?://|www\.) # Assert that we're not at the start of a URL.
(\S{150}) # Match 150 characters, capture them.",
"$1 ", RegexOptions.IgnorePatternWhitespace);
resultString=Regex.Replace(subjectString,
@“(?将”([^]{150})
”全局替换为“\1”
(根据您的正则表达式风格进行修改)这似乎是修复布局问题的一个非常糟糕的解决方案。你不能添加word wrap吗?word wrap,或overflow:hidden
。word wrap仅适用于静态大小的元素。它不适用于允许占据屏幕宽度的div。它只会拉伸该div以适应内容。如何识别URL?W它是从http(s)/ftp(s)://
开始的,还是用http(s)/ftp(s)://或www开始的?理想情况下,它是从http(s)/ftp(s)://或www开始的。谢谢!现在就测试它。呜呜!我非常尊重你的regex大师。我希望我能接受这个答案两次。