- 浏览: 536180 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
zfx1982:
楼主能把doubango和webrtc2sip的源码发我一份么 ...
CentOS下编译webrtc2sip实战 -
zfx1982:
请问在编译doubango的时候configure总是说少sr ...
CentOS下编译webrtc2sip实战 -
cgs1999:
845896876 写道老师你好,我发现// 自定义属性 ...
使用Java操作LDAP案例 -
845896876:
老师你好,我发现// 自定义属性 a ...
使用Java操作LDAP案例 -
myitela:
NAT即地址转换,也可以是内网地址与外网地址的转换。如nat1 ...
NAT与NAT穿越学习总结
1、编码工作中,需要获取一个字符串的第一个子字符串左边的字符串、获取第一个子字符串右边的字符串、获取最后一个子字符串左边的字符串、获取最后一个子字符串右边的字符串,说起来比较绕,举个例子就清楚了,如:要获取test@gmail.com@test.com中第一个@左边的字符串、第一个@右边的字符串、最后一个@左边的字符串、最后一个@右边的字符串,其实处理起来也很简单,但每次遇到就要开发一次有点烦,现整理形成帮助类问题。
2、之前在Lotus Domino/Notes下开发过,使用平台提供的StrLeft、StrRight、StrLeftBack、StrRightBack几个方法(公式),可以达到所要实现的功能,现参考其命名实现相关的功能代码。
3、几种情况下的处理规则:
(1)处理的字符串为null或空,返回空;
(2)搜索的子字符串为null或空,返回空;
(3)处理的字符串中不存在搜索的子字符串,返回空;
(4)处理的字符串中存在搜索的子字符串,则返回相关的字符串内容;
4、实现代码
5、测试代码
6、输出结果如下:
7、从测试输出结果可知实现代码正确无误。
(感谢网友remgoo指出子串长度大于1时不正确的bug,该问题现已修正,测试代码中也增加了相关的测试。)
问题已修正,感谢反馈。
嗯,strRight和strRightBack确实都存在该问题,当子串大于1的时候就不正确。
2、之前在Lotus Domino/Notes下开发过,使用平台提供的StrLeft、StrRight、StrLeftBack、StrRightBack几个方法(公式),可以达到所要实现的功能,现参考其命名实现相关的功能代码。
3、几种情况下的处理规则:
(1)处理的字符串为null或空,返回空;
(2)搜索的子字符串为null或空,返回空;
(3)处理的字符串中不存在搜索的子字符串,返回空;
(4)处理的字符串中存在搜索的子字符串,则返回相关的字符串内容;
4、实现代码
package cn.basttg.java.util; public class StringUtil { /** * 取字符串中第一个子串右边的内容 * * <pre> * 例如: * strRight("","")="" * strRight("",null)="" * strRight("","@")="" * strRight(null,"")="" * strRight(null,null)="" * strRight(null,"@")="" * strRight("test@gmail.com@test.com","")="" * strRight("test@gmail.com@test.com",null)="" * strRight("test@gmail.com@test.com","@")="gmail.com@test.com" * strRight("test@gmail.com@test.com","co")="m@test.com" * strRight("test@gmail.com@test.com","abc")="" * </pre> * * @param text 字符串 * @param subtext 搜索子串 * @return */ public static String strRight(final String text, String subtext) { if (!hasText(text) || !hasText(subtext)) { return ""; } int find = text.indexOf(subtext); return (find != -1) ? text.substring(find + subtext.length()) : ""; } /** * 取字符串中最后一个子串左边的内容 * * <pre> * 例如: * strLeftBack("","")="" * strLeftBack("",null)="" * strLeftBack("","@")="" * strLeftBack(null,"")="" * strLeftBack(null,null)="" * strLeftBack(null,"@")="" * strLeftBack("test@gmail.com@test.com","")="" * strLeftBack("test@gmail.com@test.com",null)="" * strLeftBack("test@gmail.com@test.com","@")="test@gmail.com" * strLeftBack("test@gmail.com@test.com","co")="test@gmail.com@test." * strLeftBack("test@gmail.com@test.com","abc")="" * </pre> * * @param text 字符串 * @param subtext 搜索子串 * @return */ public static String strLeftBack(final String text, String subtext) { if (!hasText(text) || !hasText(subtext)) { return ""; } int find = text.lastIndexOf(subtext); return (find != -1) ? text.substring(0, find) : ""; } /** * 取字符串中最后一个子串右边的内容 * * <pre> * 例如: * strRightBack("","")="" * strRightBack("",null)="" * strRightBack("","@")="" * strRightBack(null,"")="" * strRightBack(null,null)="" * strRightBack(null,"@")="" * strRightBack("test@gmail.com@test.com","")="" * strRightBack("test@gmail.com@test.com",null)="" * strRightBack("test@gmail.com@test.com","@")="test.com" * strRightBack("test@gmail.com@test.com","co")="m" * strRightBack("test@gmail.com@test.com","abc")="" * </pre> * * @param text 字符串 * @param subtext 搜索子串 * @return */ public static String strRightBack(final String text, String subtext) { if (!hasText(text) || !hasText(subtext)) { return ""; } int find = text.lastIndexOf(subtext); return (find != -1) ? text.substring(find + subtext.length()) : ""; } /** * 校验给定字符串中是否有文本 * * <pre> * 例如: * hasText("")=false * hasText(null)=false * hasText("test@gmail.com@test.com")=true * hasText("@")=true * </pre> * * @param text 字符串 * @return */ public static boolean hasText(String text) { return (text != null) && (!"".equals(text)); } }
5、测试代码
public static void main(String[] argus) { String strEmpty = ""; String strNull = null; String text = "test@gmail.com@test.com"; String subtext = "@"; String subtext2 = "co"; String subtext3 = "abc"; System.out.println("strLeft(" + strEmpty + "," + strEmpty + ")=" + strLeft(strEmpty, strEmpty)); System.out.println("strLeft(" + strEmpty + "," + strNull + ")=" + strLeft(strEmpty, strNull)); System.out.println("strLeft(" + strEmpty + "," + subtext + ")=" + strLeft(strEmpty, subtext)); System.out.println("strLeft(" + strNull + "," + strEmpty + ")=" + strLeft(strNull, strEmpty)); System.out.println("strLeft(" + strNull + "," + strNull + ")=" + strLeft(strNull, strNull)); System.out.println("strLeft(" + strNull + "," + subtext + ")=" + strLeft(strNull, subtext)); System.out.println("strLeft(" + text + "," + strEmpty + ")=" + strLeft(text, strEmpty)); System.out.println("strLeft(" + text + "," + strNull + ")=" + strLeft(text, strNull)); System.out.println("strLeft(" + text + "," + subtext + ")=" + strLeft(text, subtext)); System.out.println("strLeft(" + text + "," + subtext2 + ")=" + strLeft(text, subtext2)); System.out.println("strLeft(" + text + "," + subtext3 + ")=" + strLeft(text, subtext3)); System.out.println(); System.out.println("strRight(" + strEmpty + "," + strEmpty + ")=" + strRight(strEmpty, strEmpty)); System.out.println("strRight(" + strEmpty + "," + strNull + ")=" + strRight(strEmpty, strNull)); System.out.println("strRight(" + strEmpty + "," + subtext + ")=" + strRight(strEmpty, subtext)); System.out.println("strRight(" + strNull + "," + strEmpty + ")=" + strRight(strNull, strEmpty)); System.out.println("strRight(" + strNull + "," + strNull + ")=" + strRight(strNull, strNull)); System.out.println("strRight(" + strNull + "," + subtext + ")=" + strRight(strNull, subtext)); System.out.println("strRight(" + text + "," + strEmpty + ")=" + strRight(text, strEmpty)); System.out.println("strRight(" + text + "," + strNull + ")=" + strRight(text, strNull)); System.out.println("strRight(" + text + "," + subtext + ")=" + strRight(text, subtext)); System.out.println("strRight(" + text + "," + subtext2 + ")=" + strRight(text, subtext2)); System.out.println("strRight(" + text + "," + subtext3 + ")=" + strRight(text, subtext3)); System.out.println(); System.out.println("strLeftBack(" + strEmpty + "," + strEmpty + ")=" + strLeftBack(strEmpty, strEmpty)); System.out.println("strLeftBack(" + strEmpty + "," + strNull + ")=" + strLeftBack(strEmpty, strNull)); System.out.println("strLeftBack(" + strEmpty + "," + subtext + ")=" + strLeftBack(strEmpty, subtext)); System.out.println("strLeftBack(" + strNull + "," + strEmpty + ")=" + strLeftBack(strNull, strEmpty)); System.out.println("strLeftBack(" + strNull + "," + strNull + ")=" + strLeftBack(strNull, strNull)); System.out.println("strLeftBack(" + strNull + "," + subtext + ")=" + strLeftBack(strNull, subtext)); System.out.println("strLeftBack(" + text + "," + strEmpty + ")=" + strLeftBack(text, strEmpty)); System.out.println("strLeftBack(" + text + "," + strNull + ")=" + strLeftBack(text, strNull)); System.out.println("strLeftBack(" + text + "," + subtext + ")=" + strLeftBack(text, subtext)); System.out.println("strLeftBack(" + text + "," + subtext2 + ")=" + strLeftBack(text, subtext2)); System.out.println("strLeftBack(" + text + "," + subtext3 + ")=" + strLeftBack(text, subtext3)); System.out.println(); System.out.println("strRightBack(" + strEmpty + "," + strEmpty + ")=" + strRightBack(strEmpty, strEmpty)); System.out.println("strRightBack(" + strEmpty + "," + strNull + ")=" + strRightBack(strEmpty, strNull)); System.out.println("strRightBack(" + strEmpty + "," + subtext + ")=" + strRightBack(strEmpty, subtext)); System.out.println("strRightBack(" + strNull + "," + strEmpty + ")=" + strRightBack(strNull, strEmpty)); System.out.println("strRightBack(" + strNull + "," + strNull + ")=" + strRightBack(strNull, strNull)); System.out.println("strRightBack(" + strNull + "," + subtext + ")=" + strRightBack(strNull, subtext)); System.out.println("strRightBack(" + text + "," + strEmpty + ")=" + strRightBack(text, strEmpty)); System.out.println("strRightBack(" + text + "," + strNull + ")=" + strRightBack(text, strNull)); System.out.println("strRightBack(" + text + "," + subtext + ")=" + strRightBack(text, subtext)); System.out.println("strRightBack(" + text + "," + subtext2 + ")=" + strRightBack(text, subtext2)); System.out.println("strRightBack(" + text + "," + subtext3 + ")=" + strRightBack(text, subtext3)); }
6、输出结果如下:
strLeft(,)= strLeft(,null)= strLeft(,@)= strLeft(null,)= strLeft(null,null)= strLeft(null,@)= strLeft(test@gmail.com@test.com,)= strLeft(test@gmail.com@test.com,null)= strLeft(test@gmail.com@test.com,@)=test strLeft(test@gmail.com@test.com,co)=test@gmail. strLeft(test@gmail.com@test.com,abc)= strRight(,)= strRight(,null)= strRight(,@)= strRight(null,)= strRight(null,null)= strRight(null,@)= strRight(test@gmail.com@test.com,)= strRight(test@gmail.com@test.com,null)= strRight(test@gmail.com@test.com,@)=gmail.com@test.com strRight(test@gmail.com@test.com,co)=m@test.com strRight(test@gmail.com@test.com,abc)= strLeftBack(,)= strLeftBack(,null)= strLeftBack(,@)= strLeftBack(null,)= strLeftBack(null,null)= strLeftBack(null,@)= strLeftBack(test@gmail.com@test.com,)= strLeftBack(test@gmail.com@test.com,null)= strLeftBack(test@gmail.com@test.com,@)=test@gmail.com strLeftBack(test@gmail.com@test.com,co)=test@gmail.com@test. strLeftBack(test@gmail.com@test.com,abc)= strRightBack(,)= strRightBack(,null)= strRightBack(,@)= strRightBack(null,)= strRightBack(null,null)= strRightBack(null,@)= strRightBack(test@gmail.com@test.com,)= strRightBack(test@gmail.com@test.com,null)= strRightBack(test@gmail.com@test.com,@)=test.com strRightBack(test@gmail.com@test.com,co)=m strRightBack(test@gmail.com@test.com,abc)=
7、从测试输出结果可知实现代码正确无误。
(感谢网友remgoo指出子串长度大于1时不正确的bug,该问题现已修正,测试代码中也增加了相关的测试。)
评论
4 楼
cgs1999
2016-10-10
remgoo 写道
Right的都需要改造一下subtextLength
int find = text.indexOf(subtext);
int subtextLength = subtext.length();
return (find!=-1) ? text.substring(find+subtextLength) : "";
int find = text.indexOf(subtext);
int subtextLength = subtext.length();
return (find!=-1) ? text.substring(find+subtextLength) : "";
问题已修正,感谢反馈。
3 楼
cgs1999
2016-10-10
remgoo 写道
用这个测试strRightBack出错
text = "test//@gmail.com//@test//@12345//@.com";
subtext = "12345";
System.out.println("strRightBack(" + text + ", " + subtext + ")= " + strRightBack(text,subtext));
结果
2345//@.com
text = "test//@gmail.com//@test//@12345//@.com";
subtext = "12345";
System.out.println("strRightBack(" + text + ", " + subtext + ")= " + strRightBack(text,subtext));
结果
2345//@.com
嗯,strRight和strRightBack确实都存在该问题,当子串大于1的时候就不正确。
2 楼
remgoo
2016-09-23
Right的都需要改造一下subtextLength
int find = text.indexOf(subtext);
int subtextLength = subtext.length();
return (find!=-1) ? text.substring(find+subtextLength) : "";
int find = text.indexOf(subtext);
int subtextLength = subtext.length();
return (find!=-1) ? text.substring(find+subtextLength) : "";
1 楼
remgoo
2016-09-23
用这个测试strRightBack出错
text = "test//@gmail.com//@test//@12345//@.com";
subtext = "12345";
System.out.println("strRightBack(" + text + ", " + subtext + ")= " + strRightBack(text,subtext));
结果
2345//@.com
text = "test//@gmail.com//@test//@12345//@.com";
subtext = "12345";
System.out.println("strRightBack(" + text + ", " + subtext + ")= " + strRightBack(text,subtext));
结果
2345//@.com
发表评论
-
用Java实现N*N的标准数独及对角线数独解题
2016-10-11 11:25 35481、引言 前一段时间迷 ... -
用Java实现排列、组合算法
2016-09-28 19:38 333651、我们知道,排列个数 ... -
在Spring项目中实现动态创建数据库
2017-06-21 16:31 52701、问题描述 在使用Sprin ... -
实现CSS样式文件中图标的可视化
2014-06-26 14:39 5063关键词: CSS,EasyUI ... -
Java实现RTP流转发服务器
2013-10-24 17:36 00、引言 在做多方视频会议系统时,需要有代理服务器来转发视频平 ... -
利用mysql日志排查数据异常问题
2013-03-21 16:52 01、案例描述 2、MySQL日志 3、解决过程 (1) ... -
Java中通过MySQL的行锁解决并发写的问题
2012-12-22 12:45 01、案例描述 开发会议管理项目中,涉及会议管理系统和视频会议平 ... -
【算法】基于时间段的有限资源算法
2013-03-07 12:20 24351、案例描述 最近做会议管理系统,预约会议需要一个算法来判断在 ... -
API测试范例
2012-10-29 18:38 01、MessagesAPITest package com ... -
开发自己的ZooKeeper客户端工具
2013-03-21 17:04 8431简单写了一个自己用的zookeeper工具,实现了对zooke ... -
使用HttpClient4实现API测试实战(2)——多附件上传
2012-07-27 16:57 50790、特别说明 1、声明:如需转载,请注明来自 http://c ... -
使用HttpClient4实现API测试实战(1)
2012-07-26 15:52 131730、特别说明 1、声明:如需转载,请注明来自 http://c ... -
升级Spring从2.5.6至3.1.2过程实录
2012-07-21 17:15 137961、引言 项目使用的是Spring MVC + Spring ... -
嵌套For循环性能优化案例
2012-07-17 18:04 331441 案例描述 某日,在JavaEye上看到一道面试题,题目是这 ... -
Spring框架结合Quartz实现任务调度实例
2009-03-17 10:22 12211、编写调用类 QuartzJob.java ... -
使用Java操作LDAP案例
2012-07-02 15:26 259461 案例描述 公司平台使用LDAP来储存企业或用户的信息,在系 ... -
使用Java自动化生成MySQL数据库设计文档
2012-06-28 19:36 0涉及技术点 1、建立连接 2、获取数据库所有表信息 3、获 ... -
使用Spring MVC统一异常处理实战
2012-06-02 13:54 1055241 描述 在J2EE项目的开发 ... -
通过POI统一读取Excel文件(兼容97-2003和2007+两种格式)
2012-05-12 15:04 313731、引言 由于系统需要 ...
相关推荐
在Lotus Domino开发中,处理字符串是常见的任务之一。这里我们关注的是如何在字符串之间取值,这在处理用户输入、格式化数据或构建查询时非常有用。在提供的代码示例中,使用了几个VBScript函数来实现这个目标。下面...
类似于strLeft,strRight函数从字符串的右侧开始截取指定长度的子字符串。函数首先检查输入的字符串和长度,然后从字符串末尾开始遍历,逆序累加长度。当累加长度达到或超过指定长度时,结束循环并将子字符串拼接成...
本文将从给定的文件信息出发,深入探讨如何在Visual Basic(简称VB)环境中处理字符串中的中文字符,包括源代码示例、字符串操作函数以及Unicode与ASCII之间的转换方法。 #### Unicode与ASCII编码 在计算机科学中...
STRLEFT 函数可以返回字符串的左边 N 个字符,例如 STRLEFT('abcdef',3) 得到 'abc'。 19. STRMID 字符串的中间部分含义:返回字符串的中间部分。 STRMID 函数可以返回字符串的中间部分,例如 STRMID('abcdef',3...
- 使用 `left()` 和 `right()` 函数从输入字符串中提取出整数部分 (`@strleft`) 和小数部分 (`@strright`)。 - 例如:对于输入 "123456789.32",`@strleft` 将被设置为 "123456789",`@strright` 设置为 "32"。 2...
它包含了多种实用的功能模块,如字符串处理、文件版本信息获取、位图旋转等。下面将对这些功能进行详细介绍。 ### 字符串处理函数 #### HexToStr(mHex: string): string 该函数用于将十六进制字符串转换为对应的...
通过这些知识点,读者可以了解到这本电子书籍覆盖了PHP中多种实用的功能模块,不仅限于字符串处理,还涵盖了日期时间操作、文件系统交互、系统管理以及硬件监控等多个方面。这对于从事Web开发的程序员来说非常有用,...
首先,使用`CString`类的成员函数`Find`来查找分隔符(即“-”),并利用`Left`和`Right`函数将字符串分割成年、月、日三部分。 ```cpp int nPos = strTm.Find("-"); CString strYear = strTm.Left(nPos); CString ...
同样地,Strright()用于从字符串的右侧截取指定长度的子字符串,其工作原理与Strleft()类似,区别仅在于拼接字符是从字符串的末尾开始的。 需要注意的是,在ASP代码中,i通常用作循环变量,而在Strlength()、Str...
#### StrRight 和 StrLeft 这两个函数分别用于提取字符串右侧或左侧的指定长度的子串,对于文本处理非常有用。 #### Spc 生成指定长度的空格字符串,常用于格式化输出。 ### 文件与目录操作 文件中还提到了扩展...
根据给定的信息,本文将详细介绍Delphi中的经典函数,这些函数涵盖了从字符串处理到网络功能等多方面。Delphi作为一种广泛使用的开发工具,为开发者提供了丰富的内置函数来简化编程任务。 ### 一、扩展的字符串操作...
- 实现了`SplitString`函数的功能,用于按指定字符分割字符串,并返回分割后的子字符串数组。 以上是根据提供的实验报告文档所总结的关键知识点,包括实验的目的、内容及其实现方式等。这些知识点对于理解和完成...
### 二、字符串处理命令 #### 1. 字符串转换 - **STR$**:将数字转换为字符串。 - 示例:`strNum = STR$(123)` - **VAL**:将字符串转换为数字。 - 示例:`num = VAL("123")` #### 2. 字符串操作 - **LEFT$**:...
- `STRLEFT(STRING,N)`:提取`STRING`的左边`N`个字符。 - `STRRIGHT(STRING,N)`:提取`STRING`的右边`N`个字符。 - `STRMID(STRING,N,M)`:提取`STRING`从第`N`个字符开始的长度为`M`的子字符串。 - `TOSTRING...
3. `StrMid`、`StrRight` 和 `StrLeft` 用于提取字符串中的部分字符。 4. `StrReplace` 函数用于替换字符串中的特定内容。 5. `StrToInt` 将数字字符串转换为整数,便于数学运算。 这些函数组合使用,可实现灵活的...
{* 返回字符串右边的字符 Examples: StrRight('ABCEDFG',3); 返回:'DFG' } function StrLeft(Str: string; Len: Integer): string; {测试通过} {* 返回字符串左边的字符} function Spc(Len: Integer): string; {...
这涉及到在JavaScript中操作URL、处理查询字符串以及在Lotus Domino代理中解析这些参数。下面将详细解释这个过程: 1. **获取URL路径和参数**: - `var b=window.location.href;` 这一行代码用于获取当前页面的...
总结,JavaScript获取URL地址栏信息主要通过`location.href`、字符串处理和正则表达式等手段。这些方法可以帮助开发者提取URL中的特定部分,如查询参数,以满足不同场景的需求。在实际开发中,应根据项目需求选择...
查询字符串通常包含一系列键值对,用于传递数据到服务器或在客户端进行处理。以下是一个详细的教程,解释如何使用JavaScript来获取URL中的参数。 首先,我们需要了解URL结构。一个基本的URL可能如下所示: ```text...