尝试锻炼如何使用Javascript从div内的文本中删除最后几个字符。
EG: '37 John Street, Suburb ABC 20111'
to display: '37 John Street, Suburb'
我使用了下面的代码,但是某些文本具有多个空格,因此除非从末尾算起不包括空格的8个字符,否则它将无法始终如一地工作。我所知道的唯一一致的是3个字符的状态和5个字符的邮政编码,因此“ ABC20111” = 8。
<script>
$('#divText').text(function (_,txt) {
return txt.slice(0, -8);
});
</script>
有人可以帮忙吗?
答案 0 :(得分:0)
根据其他字符串的外观,您可以在,
上拆分字符串并获得第一部分。
$('#divText').text(function (_, txt) { return txt.split(/,/)[0]; });
答案 1 :(得分:0)
另一种方法是使用正则表达式将所有多个空格替换为一个空格,例如:
$('#divText').text(function (_,txt) {
txt = txt.replace(/\s\s+/g, ' ');
return txt.slice(0, -8);
});
这样,如果您还希望结尾的空格也可以使用trim,则可以始终从末尾开始计数:
$('#divText').text(function (_,txt) {
txt = txt.replace(/\s\s+/g, ' ').trim();
return txt.slice(0, -8);
});
答案 2 :(得分:0)
我认为您可以使用javascript split
函数
示例:
var str = '37 John Street, Suburb 20111'
var array = str.split(",");
print(array);
输出:[37 John Street,Suburb 20111]
答案 3 :(得分:0)
下面您将看到如何获取所需文本的逻辑。当然,您需要对其进行转换以适合您的情况。
let original_text = '37 John Street, ABC 20111'
let text_converted_to_array = original_text.split(' ')
let wanted_text = text_converted_to_array.slice(0, -1).join(' ')
console.log(wanted_text); // outputs:=> 37 John Street, ABC
答案 4 :(得分:0)
这是您可以使用的正则表达式:
$('#divText').text(function (_,txt) {
return txt.replace(/,.*[a-z]{3}.*[0-9]{5}/i,'');
});
实际上,我只是在此页面上使用过它,但是将#divText
替换为prettyprint
,并删除了原始帖子示例中的字符。
正则表达式的解释:
,.*
删除逗号和任何空白字符(但是如果需要,可以删除此字符)[a-z]{3}
删除状态的三个字母字符.*
删除所有字符,直到... [0-9]{5}
删除5个数字字符。\i
使正则表达式不区分大小写。