在javascript中将文本拆分为数组

时间:2016-08-05 12:16:37

标签: javascript

我想在javascript中的文本中获取,.时拆分。

我的文字是这样的:

  

猫爬上了高大的树。在这句话中,$ U_SEL {}是一个名词。

我想要数组:

1.The cats climbed the tall tree.
2.In this sentence
3.$U_SEL{}
4.is a noun

6 个答案:

答案 0 :(得分:1)

此挑战的正则表达式将是。

var text = "The cats climbed the tall tree.In this sentence, $U_SEL{} is a noun."
var regex = /[.,]/;
text.split(regex);
  

有关regex访问的更多信息   https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions

答案 1 :(得分:1)

这是regex。要在{}上拆分,请先将 替换为{},{}.,然后尝试拆分。

var str = "The cats climbed the tall tree.In this sentence, $U_SEL{} is a noun";
str = str.replace("{}", "{},");

//Array with splitted value
var result = str.split(/[,.]/g);

//Printing the result array
console.log(result);

答案 2 :(得分:1)

试试这个

<script type="text/javascript">
    var text = "The cats climbed the tall tree.In this sentence, $U_SEL{}, is a noun";
    var spliteds = text.split(/[\.,]/);

    alert(spliteds[0]);
    alert(spliteds[1]);
    alert(spliteds[2]);
    alert(spliteds[3]);
</script>

答案 3 :(得分:0)

 'The cats climbed the tall tree.In this sentence, $U_SEL{} is a noun.'.split(/[\.,]/)

将返回:

Array [ "The cats climbed the tall tree", "In this sentence", " $U_SEL{} is a noun", "" ]

查看String.prototype.split()

答案 4 :(得分:0)

在这种情况下,正则表达式是您的最佳选择。以上所有帖子都已正确涵盖解决问题的方法。我刚刚离开这里,如果你不知道正则表达式是如何工作的,那么它将提供你所追求的东西。

考虑到您的方案中 RegExp是非常佳的选择。上面的代码主要是为了说明如何在不使用RegExps的情况下完成它。 (更不用说它会混乱添加更多的分隔符)

var myString = "The cats climbed the tall tree.In this sentence, $U_SEL{} , is a noun";
var mySplitString = myString.split(",");
var myFinalArray = new Array();

mySplitString.forEach(function(part){
  var myTemp = part.split(".");
  myTemp.forEach(function(key){
    myFinalArray.push(key);
  });
});

console.log(myFinalArray);

答案 5 :(得分:0)

可能拆分不准确,因为拆分需要单个字符分隔符,并且第三个元素没有分隔符。

尝试捕获而不是拆分可能会更好(虽然从性能的角度来看我不知道它是否明智)。

你可以试试这个:

var pattern = /(([^.,]+?)([.,]|\{\})) */g;

var captures = [];
var s = 'First capture.Second capture, $THIRD_CAPTURE{} fourth capture.';
while ( (match = pattern.exec(s)) != null ) {
	if (match[3] == "." || match[3] == ",") {
		captures.push(match[2]);
	} else {
		captures.push(match[1]);
	}
}
console.log(captures);

var captures = [];
var s = 'The cats climbed the tall tree.In this sentence, $U_SEL{} is a noun.';
while ( (match = pattern.exec(s)) != null ) {
	if (match[3] == "." || match[3] == ",") {
		captures.push(match[2]);
	} else {
		captures.push(match[1]);
	}
}
console.log(captures);

原则如下。

  • 以句点或逗号结尾的部分句子的块,没有内部点或逗号,或以空括号对结束
  • 在每个块中,捕获内容和结尾(点,逗号或空括号对)

对于每个结果匹配,您有三个捕获:

  • 在索引1处,第一个块
  • 在索引3处,结尾
  • 在索引2处,内容没有结尾

然后,根据结尾,存储idx 1或2的匹配。

你可以修改选择匹配的循环,以获得你想要的东西,第一次捕获的点而不是最后一个,除非它是一个错字。