【问题标题】:Replace Numbers in Text替换文本中的数字
【发布时间】:2016-04-07 09:10:11
【问题描述】:

我正在尝试从字符串中替换/删除多个字符。据我所知,我从 Sharepoint 中获取多个值,当我使用 sharepointPlus 脚本从列表中获取值时,我无法删除这些 ID 信息。所以我稍后尝试用 jquery 做它并替换。 我从列表中得到以下内容:

  • 4;#Galaxy S6;#
  • 5;#Galaxy S6 edge;#
  • 15;#Galaxy S6 edge+;#
  • 1;#iPhone 6;#13;#iPhone 6 Plus;#2;#iPhone 6s;#14;#iPhone 6s Plus

要删除的结构:设备名称后的 ;#number 和 ;#。

我可以看到结构不同,主要条目有 ID;#Name;# 最后一个只是 ID;#Name

我目前使用的脚本部分是:

$("td.affectedDevices:contains(';#')").each(function() {
    $(this).html(function(index, text) {
        return text.replace('0', '')
                   .replace('1', '')
                   .replace('2', '')
                   .replace('3', '')
                   .replace('4', '')
                   .replace('5', '')
                   .replace('6', '')
                   .replace('7', '')
                   .replace('8', '')
                   .replace('9', '')
                   .replace(';#', '');
    });
});

我在另一个地方使用此代码,我只从表格中取出一个条目,然后它就可以工作了。

问题是,上面的 JS 采用每个字符串的第一个“数字;#”条目...以及设备的编号,如下面的屏幕截图所示:

应该是 Galaxy S6 <br /> Galaxy S6 edge 等等...

我在这里已经找到了一些类似的问题和答案,但解决方案根本不起作用......

Replacing Wildcard Text 解决方案看起来不错,但是

$("td.affectedDevices:contains(';#')").each(function() {
    $(this).html(function(index, text) {
        return text.replace(/\([0-9]\);#/, '');
    });
});

没有任何作用... 任何人都可以帮我解决这个问题吗?还是做整个事情的更好主意?

Fiddle

感谢您的帮助 亲切的问候

【问题讨论】:

  • 能否请您在此处添加一个小提琴或您的 HTML 以便清晰?
  • 你可以试试下面:$("td.affectedDevices:contains(';#')").each(function(index, text) { var text = $(this).html() ; $(this).html(text.replace(/([0-9]);#/, ''); });
  • 有没有办法改进你数据库中的数据?这是一个明显的 GIGO 案例
  • 为什么要转义正则表达式括号,使其成为文字字符? text.replace(/\([0-9]\);#/, '') 的意思是“一个开始括号,后跟一个 0 到 9 之间的数字,然后是一个结束括号,然后是一个分号,然后是一个 shebang”。使用/[0-9]?;#/g 代替意思是“0 到 9 之间的可选数字,后跟分号,后跟 shebang - 替换所有出现 (/g)”。如果可能超过 1 位,请使用 * 表示“0 到无限匹配”; /[0-9]*;#/g
  • @Dreamweaver : 语法错误我将您的想法更改为 $(document).ready(function(){ $("td.affectedDevices:contains(';#')").each(function( index, text) { var text = $(this).html(); $(this).html(text.replace(/([0-9]);#/, '')); }); }) ;但没有变化

标签: javascript jquery replace


【解决方案1】:
$("td").each(function() {
    $(this).html(function(index, text) {
        return text.replace(/[0-9]?;#/g, '').replace(/^[0-9]/g, '');
    });
});

希望这会对你有所帮助。

这是工作小提琴:https://jsfiddle.net/1u6brd3m/

【讨论】:

  • 知道了 THX 最终解决方案是: $("td").each(function() { $(this).html(function(index, text) { return text.replace(/;# ?[0-9]*?;#/g, '
    ').replace(/[0-9]*?;#/g, ''); }); });谢谢;-)
【解决方案2】:

将您的代码更改为:

$("td.affectedDevices:contains(';#')").each(function() {
    var string = $(this).html(),
    split = string.split('#'),
    newContent = '',
    re = /^[a-zA-Z]+$/;

    $.each(split, function( key, value ) {
        if(/^[a-zA-Z]/.test(value)) newContent = newContent + value.replace(';', '') + '<br />';
    });
    $(this).html(newContent);
});

工作示例: https://jsfiddle.net/vgkyoywq/

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-09
    • 1970-01-01
    • 2014-02-28
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多