我是jQuery / JS的新手,并想知道如何执行以下操作:
Big Sofa - Pink
Big Sofa - Blue
Small Sofa - Red
Small Sofa - Grey
我需要做的是删除之前的所有文本,包括“ - ”,这样它只显示颜色,需要通配符,以便得到任何内容并替换为空。
这可能吗?
答案 0 :(得分:0)
试试这个简单的
var a = "Big Sofa - Pink\nBig Sofa - Blue\nSmall Sofa - Red\nSmall Sofa - Grey"
var newA = a.split( "\n" ).map( function(value){ return value.split( "-" ).pop() } ).join( "\n" );
console.log( newA );
答案 1 :(得分:0)
最好的办法是使用正则表达式。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
var text = 'Big Sofa - Pink';
var color = text.replace(/^.+?- (\w+)$/i, '$1'); // Pink
^
匹配字符串
的开头
.
匹配任何字符,包括空格
+
表示前面的匹配器必须出现1次或更多次
乘数后的?
表示匹配是非贪婪的(匹配最小可能)
-
字面上与短划线和空格相匹配
(\w+)
匹配由1个或多个单词字符(字母,数字和下划线)组成的任何单词,并在组中捕获其值(在本例中为组1)
$
匹配字符串的结尾
i
(在结尾处)表示匹配不区分大小写
替换字符串($1
)用捕获组1的内容替换整个匹配。在我们的例子中,它匹配颜色。
答案 2 :(得分:0)
此正则表达式适用于多行字符串:
var str = 'Big Sofa - Pink\nBig Sofa - Blue\nSmall Sofa - Red\nSmall Sofa - Grey';
str.replace(/.+\-\s*/g, '').split(/\n/);
答案 3 :(得分:0)
你可以做为
var text = "Big Sofa - Pink";
var color = text.substring(text.indexOf("-") + 1)
答案 4 :(得分:0)
我建议使用正则表达式。 以下是您为每个条目使用span的示例:
$(document).ready(function() {
$("span").each(function() {
var text = $(this).text();
text = text.replace(/(\w+\s)+-\s/g, "");
$(this).text(text);
});
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span>Sofa test - red</span>
<span>Table test - blue</span>
&#13;