模拟Excel中SUBSTITUTE函数

Excel中的SUBSTITUTE是一个很有用的字符串替换函数,其说明如下:

说明

在文本字符串中用 new_text 替换 old_text。 如果需要在某一文本字符串中替换指定的文本,请使用函数 SUBSTITUTE;如果需要在某一文本字符串中替换特定位置处的任意文本,请使用函数 REPLACE。

语法

SUBSTITUTE(text, old_text, new_text, [instance_num])

SUBSTITUTE 函数语法具有下列参数:

  • 文本    必需。 需要替换其中字符的文本,或对含有文本(需要替换其中字符)的单元格的引用。
  • old_text    必需。 需要替换的文本。
  • new_text    必需。 用于替换 old_text 的文本。
  • Instance_num    可选。 指定要用 new_text 替换 old_text 的事件。 如果指定了 instance_num,则只有满足要求的 old_text 被替换。 否则,文本中出现的所有 old_text 都会更改为 new_text。

Java实现:

 1     public static String substitute(String src, String oldText, String newText,
 2             int... instancePositions) {
 3         /*
 4          * 由于直接使用split方法会涉及正则表达式, 但无法确认oldText中是否含有正则表达式的元字符,
 5          * 如:[]^$|等,因此先获取动态的分割符, 将oldText用replace方法(此方法不涉及正则表达式)替换为获取到的分隔符
 6          */
 7         String splitStr = getSplitStr(src);
 8         // System.out.println(splitStr);
 9         String dealSrc = src.replace(oldText, splitStr);
10         // 使用获取到的分隔符分割
11         String[] splitArr = dealSrc.split(splitStr);
12         int arrLen = splitArr.length;
13         StringBuffer sbf = new StringBuffer();
14         for (int i = 0; i < arrLen; i++) {
15             boolean needReplace = needReplace(i, instancePositions);
16             if (needReplace && i != 0) {
17                 sbf.append(newText);
18             } else {
19                 sbf.append(oldText);
20             }
21             sbf.append(splitArr[i]);
22         }
23         return sbf.toString().substring(oldText.length());
24     }
25
26     private static String getSplitStr(String src) {
27         StringBuilder sbd = new StringBuilder();
28         boolean contains = false;
29         do {
30             sbd.append("@");
31             contains = src.contains(sbd);
32         } while (contains);
33         return sbd.toString();
34     }
35
36     private static boolean needReplace(int num, int[] nums) {
37         boolean needReplace = false;
38         // 当未输入需要替换的位置时,默认全部替换,因此直接返回true
39         if (nums.length == 0) {
40             return true;
41         }
42         for (int i = 0; i < nums.length; i++) {
43             if (num == nums[i]) {
44                 needReplace = true;
45                 break;
46             }
47         }
48         return needReplace;
49     }
50
51     public static void main(String[] args) {
52         String s = substitute("[email protected]@[email protected]@[email protected]", "@@", " ");
53         System.out.println(s);
54     }
时间: 2024-08-29 07:17:27

模拟Excel中SUBSTITUTE函数的相关文章

【图文】Excel中vlookup函数的使用方法

今天统计数据,用到了Excel中vlookup函数,第一次使用当然少不了百度,经过反复研究后,算是解决了问题,现整理成文档. 一.实现效果 Sheet1 Sheet2   注:上图中sheet1商品条码列(即D列)引用sheet2中商品条码(即B列)中的数据 二.vlookup函数调用说明 以sheet1中调用函数为例,如下: =VLOOKUP(A2,Sheet2!$A$2:$B$100,2,TRUE) 函数中共有四个调用参数 1)  第一个参数:A2 :可任意指定,也可以是B2.C2等.这一列

Excel中COUNTIFS函数统计词频个数出现次数

Excel中COUNTIFS函数统计词频个数出现次数 在Excel中经常需要实现如下需求:在某一列单元格中有不同的词语,有些词语相同,有的不同(如图1所示).需要统计Excel表格中每个词语出现的个数,即相当于统计词频出现次数. 图1. Excel表格统计个数 解决方法:采用COUNTIFS函数. COUNTIFS 函数语法及格式:COUNTIFS(criteria_range1, criteria1, [criteria_range2, criteria2]…)其中,criteria_rang

Excel中Sumproduct函数的使用方法

1.sumproduct函数的含义 1 1.Sumproduct函数的适用范围,在给定的几组数组中,然后把数组间对应的元素相乘,最后返回乘积之和. 从字面上可以看出,sumproduct有两个英文单词组成,sum是和,product是积,所以是乘积之和的意思. END 2.sumproduct函数的语法格式 1 2.sumproduct函数的语法格式 =SUMPRODUCT(array1,array2,array3, ...)Array为数组. END 3.sumproduct函数案列——基础用

Excel中concatenate函数的使用方法

你还在为Excel中concatenate函数的使用方法而苦恼吗,今天小编教你Excel中concatenate函数的使用方法,让你告别Excel中concatenate函数的使用方法的烦恼. 经验主要从四方面对Excel函数进行讲解,1.函数的含义,2.函数的语法格式,3.函数在日常办公中运用的实例介绍,4.函数使用的注意点. 更多Excel经验请关注Excel小新,如果帮到了你,请在上方给个投票谢谢支持.好人一生平安. 先顶后看年薪百万,如果帮到了你,帮忙给个好评,这对小编很重要,万分感谢.

Excel中mod函数的使用方法

1.mod函数的含义 1 1.mod函数是一个用来求余数函数,返回两数相除的余数.mod函数在Excel中一般不单独使用,经常和其他函数组合起来使用. END 2.mod函数的语法格式 1 2.mod函数的语法格式 =mod(number,divisor)=mod(被除数,除数). END 3.mod函数基础 1 3.如图,我们经常使用的是能否被2整除,返回1和0两种值的特性.如图所示. END 4.mod函数案列 4.如图,用来隔列求和. 输入公式=SUM(IF(MOD(COLUMN(A1:F

Excel中连接函数CONCATENATE()

直接API: CONCATENATE 函数语法具有下列参数 (参数:为操作.事件.方法.属性.函数或过程提供信息的值.): Text1 必需. 要连接的第一个文本项. Text2, ... 可选. 其他文本项,最多为 255 项. 项与项之间必须用逗号隔开. 注释 您也可以使用连接符号 (&) 计算运算符代替 CONCATENATE 函数来连接文本项. 例如,=A1 & B1 返回相同的值为=CONCATENATE(A1, B1) 示例 复制下表中的示例数据,然后将其粘贴进新的 Excel

java 直接调用micorosoft office (2003-2007和2010版本)中excel中计算函数

主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx 读取excel和MySQL相关: java的poi技术读取Excel数据到MySQL 你也可以在 : java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术 :java的jxl技术导入Excel 下面是本文的项目结构: ======================================== 项目中所需要的ja

Excel中row函数的使用方法

1.row函数的含义 1 row函数的含义 返回所选择的某一个单元格的行数. END 2.row函数的语法格式 1 row函数的语法格式 =row(reference) 如果省略reference,则默认返回row函数所在单元格的行数. END 3.row函数案列 1 如图所示,输入公式=row(C6).返回C6单元格所在列,返回6. 2 如图所示,如果 reference 为一个单元格区域,返回引用中的第一行的列号. 这里第一行为B5所在行,返回5. 3 如图所示,row函数常常和mod函数结

excel中mid函数的用法

函数名称:MID主要功能:从一个文本字符串的指定位置开始,截取指定数目的字符.使用格式:MID(text,start_num,num_chars)参数说明:text代表一个文本字符串:start_num表示指定的起始位置:num_chars表示要截取的数目.应用举例:假定A47单元格中保存了“我喜欢天极网”的字符串,我们在C47单元格中输入公式:=MID(A47,4,3),确认后即显示出“天极网”的字符.特别提醒:公式中各参数间,要用英文状态下的逗号“,”隔开.