文档库 最新最全的文档下载
当前位置:文档库 › 集算器文本处理之批量替换

集算器文本处理之批量替换

集算器文本处理之批量替换
集算器文本处理之批量替换

集算器文本处理之批量替换

在进行文本处理时,有时候需要根据配置文件替换源文件中的多组字符串。命令行可以替换单组字符串,但难以进行批量替换,高级语言当然可以完成这项工作,但需要编写复杂的多层循环,如果源文件太大而无法放入内存,则处理起来会更加困难。集算器支持迭代函数自动处理循环,并提供游标读取大文件,易于实现批量替换,下面通过例子来看一下具体作法。

配置文件condition.txt有两列,以tab为分割符,列befor表示被替换的字符串,列after表示替换后的字符串,现在要根据该配置文件对source.txt进行批量替换,最后将替换的结果写入result.txt。文件condition.txt的部分数据如下(第一行是列名):

源文件source.txt

集算器代码:

A1=file("e:\\condition.txt").import@t()

这句代码用来读取配置文件。函数import可将文本文件或二进制文件读成二维表(序表),默认的列分割符是tab,选项@t表示将第一行读为列名。A1的计算结果如下:

A2=file("e:\\source.txt").read()

这句代码用来读取源文件。函数read可将文本文件读成一个大字符串。A2的计算结果如下:

A3=A1.loops(replace(~~,before,after);A2)

这句代码用来按照A1批量替换A2里的字符串。函数loops是迭代函数,可以对一个集合(比如记录的集合A1)进行循环计算,依次取出集合中的成员,按照指定的表达式进行计算(比如replace(~~,before,after)),计算的结果可以参与下一次计算(符号~~表示上一次的计算结果),直到循环完整个集合。A2是函数loops的初始值。

函数replace用来进行字符串替换,有三个参数:源字符串、被替换的字符串、替换后的字符串,分别是~~、before、after。这里的before和after是序表A1中的列名(字段名)。

替换的过程其实只有A3这一句,下面把替换结果写入文件,如下:

A4=file("e:\\result.txt").write(A3),这里的函数write可以将字符串写入文件。

A1-A4还可以简化如下:

A1=file("e:\\condition.txt").import@t().loops(replace(~~,before,after);file("e:\\source.txt").read()) A2=file("e:\\result.txt").write(A1)

如果文件太大不能放入内存,就只能每次读入少量数据进行替换,并追加写入新文件,如此循环往复,直到读完整个大文件。集算器代码如下:

A2=file("e:\\source.txt").cursor@s()。

这句代码用来打开源文件。函数cursor并不会将数据全部读入内存,而是以游标(流)的方式打开文件。选项@s表示将数据读为单列序表,列名为_1。否则会按照分隔符将数据读为多列序表,列

名自动命名为_1、_2、_3…_n。

A3:for A2,1000

这句代码表示对游标A2进行循环,每次读入一批数据(本案例定为1000行)。

B3-B5是A3的循环体,算法类似上一个案例,即将当前行进行批量替换,追加写入新文件。值得注意的是,集算器使用直观的缩进来表示循环体,而不是括号或begin/end等标识符。

B3=A3.(_1).string@d(“\r\n”)

这句代码可将当前批次的数据拼为一个大字符串。A3代表循环变量,即当前批次的数据。A3.(_1)表示取得A3中的_1列。函数string可以将集合中的成员按照指定分隔符拼成一个大字符串,这里的分隔符是回车换行,选项@d表示不在每个成员的前后加引号。

B4=A1.loops(replace(~~,before,after);B3))

这句代码用来对大字符串进行批量替换。

B4=file("e:\\result.txt").write@a(B4)

这就代码用来将当前行的替换结果写入文件。选项@a表示追加。

到此为止,对大文件进行批量替换的过程就结束了,可以打开result.txt查看数据,如下:

文本编辑器使用使用说明

文本编辑器使用说明书

目录 1文本编辑器结构 (1) 1.1功能操作按钮栏 (1) 1.2内容栏 (1) 2功能分解 (1) 2.1功能操作按钮栏第一排 (1) 2.1.1全屏编辑 (2) 2.1.2预览 (2) 2.1.3粘贴 (2) 2.1.4粘贴为无格式文本 (2) 2.1.5从MS Word 粘贴 (2) 2.1.6撤销 (3) 2.1.7重做 (3) 2.1.8插入/编辑图像 (3) 2.1.9插入/编辑表格 (4) 2.1.10插入水平线 (4) 2.1.11插入/编辑超链接 (4) 2.1.12取消超链接 (5) 2.1.13查找 (5) 2.1.14替换 (5) 2.1.15全选 (5) 2.1.16清除格式 (5) 2.2功能操作按钮栏第二排 (5) 2.2.1格式 (6) 2.2.2字体 (6) 2.2.3大小 (6) 2.3功能操作按钮栏第三排 (6) 2.3.1空格 (6) 2.3.2加粗 (6) 2.3.3倾斜 (7) 2.3.4下划线 (7) 2.3.5删除线 (7) 2.3.6左对齐 (7) 2.3.7居中对齐 (7) 2.3.8右对齐 (7) 2.3.9两端对齐 (7) 2.3.10插入/删除编号列表 (8) 2.3.11插入/删除项目列表 (8) 2.3.12文本颜色 (8) 2.3.13背景颜色 (8) 2.3.14下标 (8) 2.3.15上标 (8) 2.3.16源代码 (9)

1文本编辑器结构 文本编辑器大体结构可以分为两部分,分别为:功能操作按钮栏和内容栏。 1.1功能操作按钮栏 功能操作按钮栏:用于对内容进行编辑。 1.2内容栏 内容栏:用于显示输入的内容。 2功能分解 在功能操作按钮栏中功能按钮分为三排,下面将分别按照每排的顺序进行逐一介绍。 2.1功能操作按钮栏第一排 功能操作按钮栏第一排中共包含16个功能按钮,如下图所示。 图2-1-1 功能操作按钮栏第一排

简易计算器的实现(JSP)

用JSP编写的一个简易计算器实现代码如下: <%@ page contentType="text/html;charset=gb2312"%>

简易计算器


<% //接收第一个数 String num1=request.getParameter("numb1"); //接收第二个数 String num2=request.getParameter("numb2");

//接收运算符号 String oper=request.getParameter("op"); Double dnum1=0.0; Double dnum2=0.0; Double result=0.0; //java中String -> int if(num1!=null&&num2!=null&&oper!=null) { dnum1=Double.parseDouble(num1); dnum2=Double.parseDouble(num2); //计算 if(oper.equals("+")) { //加 result=dnum1+dnum2; } else if(oper.equals("-")) { //减 result=dnum1-dnum2; } else if(oper.equals("×")) { //乘 result=dnum1*dnum2; } else { //除 result=dnum1/dnum2; } } %>

请输入第一个数: 请输入第二个数: 请选择运算符:

几种常用网页文本编辑器总结

文本编辑器应用总结 一.lhgeditor文本编辑器 lhgeditor组件文件结构: 1. lhgeditor.js:组件的核心JS文件 2. lhgeditor.css:组件的样式表文件 3. images:组件所需的图片都在此文件夹中 以上三个文件为组件所必须的三个文件,组件包中其它以“_”开头的文件为示例的演示文件,实际使用中不需要这些文件。当然框架核心文件lhgcore.js是每个组件都必须用到的文件,记得加载组件前先要加载此文件。 lhgeditor组件使用说明: 1. 在调用组件的页面加载lhgcore.j s和lhgeditor.js两个文件。 2. 在window.onload函数里加入J.editor.add(编辑器的id).init(); 例:

二.nicEdit文本编辑器