使用jQuery

时间:2017-06-01 20:26:19

标签: javascript jquery html sorting alphabetical

是否可以在div中找到某些特定文字,然后按字母顺序对其进行排序?

例如,在div

中的此文本块中
<div class="text-block">
Jim, Mike, Ali, and Marsha went to the store.
</div>

我想按字母顺序排序Jim, Mike, Ali, and Marsha,所以输出就是这样:

<div class="text-block">
Ali, Jim, Marsha, and Mike went to the store.
</div>

我觉得这完全不可能完全不可能,但也许只是找到并替换?不太确定最好的方法是什么。

3 个答案:

答案 0 :(得分:1)

您可以使用正则表达式完成此操作。这样您就可以支持更多功能的输入。

result = [row.copy()  for row in rows if 'count' not in row]
$(".text-block").html(function(idx, oldhtml) {
    return oldhtml.replace(/[, a-z]+and [a-z]+/gi,function(a) {
        tmp = a.replace(" and "," ").split(/[^\w]+/).sort();
        return tmp.slice(0,-1).join(", ") + ", and " + tmp.pop();
    })
});

答案 1 :(得分:0)

就像那样:

divText = $('.text-block').text();
arr = divText.split(",");
lastStr = arr.pop(-1);
arr.sort();
arr.push(lastStr);
$('.text-block').text(arr.toString());

答案 2 :(得分:0)

你可以这样做: 使用正则表达式从大写字母开始获取名称。 排序名称后,需要连接剩余的文本。 见下文:

&#13;
&#13;
var str = $('.text-block').text();//Read the div

var names = str.match(/\b[A-Z].*?\b/g);//Find out names

var lastName = names[names.length - 1];
var lastNameIndex = str.indexOf(lastName);
var remainingStr = str.slice(lastNameIndex + lastName.length);//remaining 
                                                              //text
names = names.sort();
names[names.length - 1] = " and " + names[names.length - 1];
var newStr = names + remainingStr;
$('.text-block').text(newStr);//update div
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="text-block">
  Jim, Mike, Ali, and Marsha went to the store.
</div>
&#13;
&#13;
&#13;