Javascript:长串到小块

时间:2013-09-02 23:23:32

标签: javascript jquery

我想做一个书签,从某个网站获取一些信息。

使用$('#div').text();并避免div中的html元素后,我得到以下字符串:

                  TOP-GOST d.o.o.

                  Tel:

              01 200 50 80 , 041 843 303

                  E-mail: 
                      info@via-bona.com

                Spletna stran podjetja


                  Tbilisijska ulica 59
                  1000 Ljubljana 
                  Slovenija

正如您所看到的,在一个大字符串中有很多不必要的空格和不同的信息。我想要做的是删除所有空格,删除不必要的信息(如电话:,电子邮件:,Spletna stran podjetja)并用逗号','分隔重要信息。

是否可以将每个独立的信息部分放入自己的变量中?我的解决方案与php's explode()或倒javascript join()类似,之后用逗号粘在一起。

关于删除不必要的部分,是使用.replace().好主意吗?

期望的结果:

variable one_string = 'TOP-GOST d.o.o., 012005080, 041843303, info@via-bona.com, Tbilisijska u...';

AND LATER

variable title = 'TOP-GOST d.o.o.'
variable phone = '012005080,041843303'
variable email = 'info@via-bona.com'

etc.

原始源代码HTML:

<div class="offer-contact">
<h3 class="offer-company">
    TOP-GOST d.o.o.</h3>
<strong>
    Tel:
</strong>
01 200 50 80 , 041 843 303<br>
<strong>
    E-mail:</strong> <a href="mailto:info@via-bona.com">
        info@via-bona.com</a><br>
<strong>
<a href="http://www.via-bona.com" target="_blank">Spletna stran podjetja</a><br>

</strong></div><strong>                               

<div class="offer-map">
<p>
    Tbilisijska ulica 59<br>
    1000 Ljubljana <br>
    Slovenija<br>

</p>
</div>

2 个答案:

答案 0 :(得分:3)

  

$('#div').text();并避免div中的html元素

为什么不使用HTML结构而不是丢弃它?为什么不单独访问$('#div')$('#phone') ...而不是访问$('#email')?如果他们没有ID,但结构稳定,您可以使用$('#div > div:nth-child(3)')种选择器来确定您要查找的内容。

编辑:现在我们可以看到结构:

var title = $('.offer-company').text().trim();
var email = $('.offer-contact a').attr('href').trim();
var address_array = $.map($('.offer-map p').html().split('<br>'), function(v) {
  var t = v.trim();
  if (t.length) return t;
});
// Phone is trickier; it's not in a tag by itself. So, this
// is the more reliable method (get rid of everything else):
var $offer = $('.offer_contact').clone();
$offer.find('.offer-company, strong, br, a').remove()
var phone_array = $.map($offer.html().split(','), function(v) {
  var t = v.trim();
  if (t.length) return t;
});
// The alternative would have been to go with regexp, which
// is not recommended for cutting up HTML.

这样的事情应该这样做。如果您需要以逗号分隔的地址或电话字符串,则可以address_array.join(', ')(电话也一样)。

答案 1 :(得分:2)

尝试摆脱这样的连续空格:

$('#div').text().replace('\n', ' ').replace(/\s\s*/g, ' ');

DEMO