我们经常会拿到一个多行的文本,需要在前端展示。
但是HTML不能识别回车,有的时候需要用split来切分段落,然后将切分后的结果形成数组。那么怎么切分呢?
下面是一段js代码
var text = ... ;
var res = text.split(/\n/);
这是一段简单的代码,并且的确可以解决问题。但当我们考虑复杂一点儿的情况时,这段就还有改进的余地。
这里“复杂一点儿的情况”主要指操作系统的差别。
(1)在微软的MS-DOS和Windows中,使用“回车CR('\r')”和“换行LF('\n')”两个字符作为换行符;
(2)Windows系统里面,每行结尾是 回车+换行(CR+LF),即“\r\n”;
(3)Unix系统里,每行结尾只有 换行CR,即“\n”;
(4)Mac系统里,每行结尾是 回车CR 即'\r'。
改进1
所以我们要改进上面的正则表达式,可以改为:
var r = /[\n\r]/;
// \n:换行
// \r:回车
上面的代码会解决所有系统下的问题,但会带来一个windows下切分文字的bug。对于如下的文字:
var text = 'abc\r\ncde';
会被切分成三行,实际上,我们只希望得到两行。
于是有了改进2
var r = /[\n\r]+/;
这个切分开起来比较完美了,但是它忽略了空行。对于如下的文字:
var text = "abc\r\n\r\nddd";
我们会得到两行,而不是想象中的三行。对于大部分显示,这是可以接受的,但我们还希望得到更好的。
改进3
var r = /\r\n|\n\r|[\n\r]/;
这里有几点需要注意:
- 由于js的正则引擎是NFA的,所以会优先匹配第一个分支,因此当存在分支时,“长”的分支要在前面,否则“短”分支会先被匹配。即,不能写成/[\r\n]|\r\n/;
- 由于回溯的存在,使用[\r\n]的效率高于分支,所以后一个写成[\r\n],而不是\r|\n;
- 规则/\n\r/可以去掉,从而使之精简。
所以以上可以写成:
var r = /\r\n|[\r\n]/;
补充
对于不用考虑首末空格的可以考虑使用\s+,效率也较高。
分享到:
相关推荐
例如,使用`RegEx.Split`函数可以方便地根据正则表达式分割字符串。 5. **忽略空字符串**:在分割过程中,可能希望跳过空的子字符串。这通常需要在处理结果时进行检查。 6. **性能优化**:对于大量数据的字符串...
* 使用 split() 方法将字符串分割成多个子字符串。 * 使用 substring() 方法提取字符串中的部分字符。 * 使用 indexOf() 方法查找字符串中的指定字符或子字符串。 Java 字符串处理提供了多种方法和技巧来处理字符串...
- 在“应用于”选项中选择“文本”或“段落”,根据需要确定分割线应用的范围。 4. **预览与确认**:预览效果后,点击“确定”完成设置。 #### 2.2 使用快捷键 Word还提供了快速插入分割线的快捷键方式: - 插入一...
- 如果包含空格,使用`String.split(" ")`方法将字符串按空格分割成一个字符数组。 - 接着,遍历字符数组,将所有元素连接成一个新的字符串,此时新的字符串不含空格。 - 将新字符串设置回EditText,使用`...
本文将详细介绍如何使用JavaScript的`split()`函数来实现字符串按逗号和回车进行分隔。 首先,`split()`是JavaScript中的一个内置函数,它允许我们根据提供的分隔符将字符串分解成多个子字符串,并返回一个包含这些...
可以使用字符串的Split函数或者SubString方法来实现。 3. **计算高度**:当决定分行后,需要计算新行的高度,以确保所有数据都能正确显示。可以使用Canvas.TextWidth和TextHeight函数来测量文本宽度和高度。 4. **...
`split`方法可以根据指定的分隔符将字符串分割成若干子字符串,并将这些子字符串存储到数组中。为了能够正确处理用户在Windows系统和Unix系统环境下换行的不同(分别为`\r\n`和`\n`),我们可以使用正则表达式`/[\r\...
下面是一些使用`chunk_split()`函数的实例: ```php // 示例1:在每个字符后插入句点 $str1 = "Hello world!"; echo chunk_split($str1,1,"."); // 示例2:在每六个字符后插入省略号 $str2 = "Hello world!"; echo...
`split()`的作用是根据指定的分隔符将字符串分割成多个子字符串,并返回一个包含这些子字符串的列表。基本语法如下: ```python s.split([sep[, maxsplit]]) ``` - `sep`是分隔符,如果不提供,则默认使用任何空白...
要处理这些回车换行符,你可以使用`explode()`函数将字符串根据分隔符(`\n`)拆分为数组。这样,每个数组元素代表一行文本: ```php $arr = explode("\n", $str); print_r($arr); ``` `print_r($arr)`会打印出...
本文将深入探讨如何使用自定义函数将包含逗号、空格和回车的字符串转换为数组,以便更好地进行数据处理和分析。 首先,让我们分析给定的`strsToArray()`函数。这个函数的主要目标是将由特定分隔符(空格、逗号、...
这些内容可能涵盖JavaScript、CSS和HTML的使用,特别是涉及到事件监听(如keyup事件)、字符串处理(如split函数用于根据逗号或回车分割输入的文本)、DOM操作(创建和更新绿色小框)以及用户交互逻辑(如编辑和删除...
使用 Python 的 jieba 库和 split 函数可以实现该功能。 知识点:Python 的 jieba 库、split 函数、字符串处理 4. 使用 turtle 库的 turtle.fd 和 turtle.seth 函数绘制一个边长为 100 的三角形。使用 Python 的 ...
imei_arr = imei_str.split(';'); var num = imei_arr.length - 1; window.document.getElementById("taishuTxt").value = num; window.document.getElementById("imeiTxt").value = imei_str; focus(); ...
1. 基本的输入输出操作:在Python中,使用`input()`函数可以接受用户的控制台输入,这个函数会读取用户的输入直到遇到回车键结束,输入的内容会以字符串形式返回。在本例中,通过`s=input()`来获取用户输入的数据。 ...
我们有这样一个字符串: 代码如下: info=’abcd;efgh’ 现在想获取abcd和efgh,我们可以简单地用cut工具来获取: 代码如下: fstr=`echo $info | cut -d \; -f 1` sstr=`echo $info | cut -d \;...
命令,然后按回车执行。这里的 `php.exe` 是PHP解释器的执行文件,它会解析并执行 `split.php` 中的PHP代码,完成图片的切割操作。 执行完成后,根据你在`split.php` 中设置的参数,你会在当前目录下看到生成的...