如何在100个字符后的第一个空格后拆分长字符串

时间:2014-05-23 11:07:42

标签: javascript regex string split

我有一个很长的字符串,并希望将其拆分为+/- 100个字符的段,如果它超过100则不然。 这意味着我有这样的字符串:

字符串输入

"asld asö öasdn askdn asklcanscklans cakslcna acsklcnasclk ncaslkcnas casld asö öasdn askdn asklcanscklans cakslcna acsklcnasclk ncaslkcnas c"

并且需要这两个字符串

1: "asld asö öasdn askdn asklcanscklans cakslcna acsklcnasclk ncaslkcnas casld asö öasdn askdn asklcanscklans"
2: "cakslcna acsklcnasclk ncaslkcnas c"

正如你所看到的,我需要在第一个空格之后,在第100个字符之后将它们分开。

我对如何使用.split()

无能为力

5 个答案:

答案 0 :(得分:3)

您可以使用indexOf在字符串中搜索指定的字符,indexOf还为字符串中的起始索引提供可选参数,为您提供子字符串的位置或执行您需要执行的操作:

string.indexOf(' ',100);

如果要执行进一步的拆分,可以使用循环运行结果并执行相同的操作。

在这里使用正则表达式有一些建议可能没问题,我想说的是如果你想使用正则表达式然后离开并了解模式的作用。使用您不理解的代码会使您以后的生活变得困难。

答案 1 :(得分:2)

string.split(/(.{100}\S*)\s/).filter(function(e){return e;});

怎么样?

答案 2 :(得分:2)

您可以在位置100之后找到第一个空格:

var index = string.indexOf(' ', 100);

你想在这个空格之后拆分,所以你的第二部分从:

开始
var splitPoint = string.indexOf(' ', 100) + 1;

如果字符串长度不是100个字符,或者在位置100之后没有空格,则splitPoint为零(因为indexOf返回-1),并且您不想拆分。

因此您可以将字符串拆分为:

if (splitPoint > 0) {
  var part1 = string.substring(0, splitPoint);
  var part2 = string.substring(splitPoint);
  // Do something with the parts.
}

答案 3 :(得分:0)

正如documentation中所述,您可以使用RegExp进行拆分,并使用捕获组捕获其中的一部分。

var s = "asld asö öasdn askdn asklcanscklans cakslcna acsklcnasclk ncaslkcnas casld asö öasdn askdn asklcanscklans cakslcna acsklcnasclk ncaslkcnas c";
s.split(/(.{100}[^\s]*)\s/);

// 1 : "asld asö öasdn askdn asklcanscklans cakslcna acsklcnasclk ncaslkcnas casld asö öasdn askdn asklcanscklans"
// 2 : "cakslcna acsklcnasclk ncaslkcnas c"

要删除空元素,可以使用filter方法:

s.split(/(.{100}[^\s]*)\s/).filter(function(s) {
    return s.length > 0;
});

答案 4 :(得分:-1)

您可以使用substr

轻松完成
var your_string = "asld asö öasdn askdn asklcanscklans cakslcna acsklcnasclk ncaslkcnas casld asö öasdn askdn asklcanscklans cakslcna acsklcnasclk ncaslkcnas c"

var string1 = your_string.substr(0,105);
var string2 = your_string.substr(106,your_string.length)