当前位置: 代码迷 >> Web前端 >> 用正则截取字长字符串一部分显示省略号
  详细解决方案

用正则截取字长字符串一部分显示省略号

热度:134   发布时间:2012-11-18 10:51:21.0
用正则截取字长字符串部分显示省略号
这段时间项目中遇到页面显示的时候,有的标题特别长,导致页面的布局很难控制,开始用substring方法取子串在拼接“...”以代表省略部分,再给控件加上title属性。问题是解决了,安慰的同时感觉是那么的笨拙,随即看了一下js正则表达式,还是有了很牛X的发现!!

w3school上这么解释replace()的:
语法:stringObject.replace(regexp/substr,replacement)
参数:regexp/substr 必需。规定子字符串或要替换的模式的 RegExp 对象。
         请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是
         首先被转换为 RegExp 对象。
      replacement 必需。一个字符串值。规定了替换文本或生成替换文本的函数。
返回值:一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配
        之后得到的。

说明:
      字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。

replacement 可以是字符串,也可以是函数。如果它是字符串,那么每个匹配都将由字符串替换。但是 replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。

字符 替换文本
$1、$2、...、$99 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。
$& 与 regexp 相匹配的子串。
$` 位于匹配子串左侧的文本。
$' 位于匹配子串右侧的文本。
$$ 直接量符号。

大家知道在正则表达式中()的作用和在算术运算中没什么差别,无疑是代表一个整体部分。让你的正则部分用()括起来你就可以使用$了。

举例如下:
    function test() {
            var s = "123456";
            alert(s.replace(/(\d{2})(\d{3})(.*)/, "$2..."));
        }

结果为:345...
欣喜若狂的去改代码,.net前台用的formlist控件,调用js也不知道是麻烦还是本人技术不到家,从没用过哦。只有查msdn了,C#的Regex类提供了Replace()方法,费劲巴拉的看了一遍,看上了重载的第二个方法replace(string,string);尝试一下果真如愿:
举例如下:
   string str = new Regex(@"^(.{6})(.*)$").Replace("abcdefgh", "$1...");

结果为:abcdef...
翻了翻java的文档,没找到此功能的函数,Matcher类的group()和replaceAll()实现也不难,今天收工!
  相关解决方案