【问题标题】:Getting all characters after the last '-' in a string [closed]获取字符串中最后一个“-”之后的所有字符[关闭]
【发布时间】:2013-09-05 21:38:09
【问题描述】:

我在一些非常严格的包端限制范围内工作,并且有一个客户对他的要求毫不留情,所以我不得不在 .js 中做一些我不想做的事情。

不管怎样,来吧。

我有客户评论。在这些评论的结尾,我有“-美国”或“-澳大利亚”。基本上,在每次评论结束时,我都有“- [位置]”。我需要将该字符串从评论文本中拉出,然后将其插入到跨度中。我正在使用 jQuery,所以我想坚持下去。

我已经整理好如何遍历每条评论并将其插入到我需要的地方,但我还没有弄清楚如何从每条评论中获取该文本字符串,然后将其从每条评论中删除。那是我真正需要帮助的地方。

示例文本:

<div class="v2_review-content">
    <h4>These earplugs are unbelievable!</h4>
    <p class="v2_review-text">These are the only earplugs I have ever used that completely block out annoying sounds. I use them at night due to the fact I am an extremely light sleeper and the slightest noise will wake me up. These actually stick to the ear in an airtight suction and do not come out at all until I pull them off in the morning. These are as close to the perfect earplug as you can get! - United States</p>
    <p class="v2_review-author">Jimmy, March 06, 2013</p>
</div>

如果有帮助,我也可以使用 underscore.js。

【问题讨论】:

  • 在你的字符串中找到" - "的每一个出现,得到最后一个,之后的所有文本都是你的国家。从字符串中删除它并将其放置在一个新元素中,附加到段落标签..
  • 那么,您已经尝试过什么?您是否坚持从该 HTML 中提取字符串?还是解析位置?改变现有的 DOM?
  • 到目前为止你尝试过什么?为什么那行不通?相反会发生什么?帮助我们帮助您。
  • 在'-'上拆分,数组的最后一个元素是国家
  • 我已经搜索过我应该使用的函数/语法,但我被困住了,因为这是我以前从未接触过的 .js 区域,所以我什至不知道该怎么走关于这样做。 JavaScript 是一种客户端语言,字符串解析是资源密集型的,我想问问专业人士最好的方法是什么。

标签: javascript jquery


【解决方案1】:

实际的字符串操作不需要 jQuery - 有点笨拙,但容易理解:

text = 'Something -that - has- dashes - World';
parts = text.split('-');
loc = parts.pop();
new_text = parts.join('-');

所以,

loc == ' World';
new_text == 'Something -that - has- dashes ';

可以修剪或忽略空格(因为它在 HTML 中通常无关紧要)。

【讨论】:

    【解决方案2】:

    首先在“-”上拆分搅拌,这将在破折号之间为您提供一个字符串数组。然后将其用作堆栈并弹出最后一个元素并调用 trim 以删除任何讨厌的空白(当然,除非您喜欢您的空白)。

    "String - Location".split('-').pop().trim(); // "Location"
    

    所以使用 jQuery 会是

    $('.v2_review-text').html().split('-').pop().trim(); // "United States"
    

    或者使用原生 JS

    var text = document.getElementsByClassName('v2_review-text')[0].innerHTML;
    text.split('-').pop().trim(); // "United States"
    

    【讨论】:

    • 不错的答案。 Here's a jsFiddle 实现您的答案。 (我想看到它工作,而且效果很好)。随意修改/包含在您的答案中。
    【解决方案3】:

    试试这样的

    str2 = str.substring(str.lastIndexOf("-"))
    

    【讨论】:

      【解决方案4】:

      最简单的方法大概是使用jQuery获取元素,使用原生JavaScript获取字符串:

      var fullReview = $('.v2_review-text').text(); //assumes only one review exists, adjust for your use.
      var country = fullReview.substring(fullReview.lastIndexOf(' - ') + 1); //TODO correct for -1 if ' - ' not found.
      

      这只是一个概念证明;其余的应该相对容易弄清楚。在你学习的时候要查一些东西:jQuery each

      【讨论】:

      • 肯定不像原生 JS...
      • 这将在第一个破折号之后检索任何文本,OP 要求最后一个 afaik。
      • @Shomz:是的,已调整!
      • @ΔάκηςΑνδρέου:你确定吗? lastIndexOf 应该获取破折号的最后位置。
      【解决方案5】:
      var val = $('.v2_review-text').text();
      var city_array = val.split('-');
      var city = city_array[city_array.length - 1];
      

      希望我对你有所帮助。

      【讨论】:

        【解决方案6】:
        var completeText = $('.v2_review-text')[0].value;
        var country = completeText.substr(completeText.lastIndexOf('-'), completeText.lenght - 1);
        

        【讨论】:

        • 这对我有用,var completeText = $('.v2_review-text')[0].value; var country = completeText.substr(completeText.lastIndexOf('-')+ 1, completeText.lenght );
        猜你喜欢
        • 2016-07-10
        • 2023-02-10
        • 1970-01-01
        • 2021-09-18
        • 2017-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-22
        相关资源
        最近更新 更多