服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - 关于replaceFirst使用时的注意事项

关于replaceFirst使用时的注意事项

2022-08-14 10:00_shampoo_ Java教程

这篇文章主要介绍了关于replaceFirst使用时的注意事项,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

replaceFirst使用时的注意事项

公司项目最近有一个开发填空题的需求,经过思索和分析,决定通过SpannableString来实现,在这个过程中

replaceFirst给了我两个坑:

坑一

通过UnderlineSpan在填空位置画下划线,并通过ClickableSpan 给填空处设置监听,点击下滑线处便呼出带有输入框的对话框输入内容之后替换到空格处

由于UnderlineSpan对空格加下划线在部分手机上实现不了,于是在填空位置首尾加上一对括号

在将输入值赋到空处出现问题

例如:

content  =  我是##人,我爱##;firstValue = 中国 ;经历以下代码之后:

?
1
content = content.replaceFirst(YHAnswer.SEPARATOR, “(”+fisrtValue+")");

content 变成了  我是(中国人,我爱##);预期值是  我是(中国)人,我爱##

这不知道算不算一个bug,我研究了好久,以为是括号造成的,换成别的符号甚至汉字还是如此,但不加括号却是正常的,

最后发现原因是后面这个参数是拼接的,改成下面这样就没问题了

?
1
2
String before = "("+fisrtValue+")";
content = content.replaceFirst(YHAnswer.SEPARATOR, before);

坑二

在输入过程中,难免会输入特殊符号,当输入$号时,经过replaceFirst后$  号就不见了

例如:

content  =  我是##人,我爱##;firstValue = 中$$国 ;经历以下代码之后:

?
1
2
String before = "("+fisrtValue+")";
content = content.replaceFirst(YHAnswer.SEPARATOR, before);

content 变成了  我是(中国)人,我爱##);预期值是  我是(中$$国)人,我爱##

如果需求允许,可以直接屏蔽$,如果不允许则需要添加转义字符;

String类的replaceFirst方法不好用的原因

今天正好用String的replace方法来替换下面的AND,结果发现怎么样都不好用,随即作了一下试验,

代码一

?
1
2
3
4
5
String str = new String("AND AAE112");  
str.replaceFirst("AND","");
System.out.println(str);
 
AND AAE112

代码二

?
1
2
3
4
5
String str = new String("AND AAE112");  
String out = str.replaceFirst("AND","");
System.out.println(out);
 
 AAE112

可以看出,代码二的结果是正确的,可见replaceAll并不会改变原有的str,这和PB和PL/SQL是不同的。原因应该是str指向的是一个地址。 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。 

原文链接:https://blog.csdn.net/u011028777/article/details/72586613

延伸 · 阅读

精彩推荐
  • Java教程Spring MVC处理参数中的枚举类型通用实现方法

    Spring MVC处理参数中的枚举类型通用实现方法

    这篇文章主要给大家介绍了关于Spring MVC处理参数中的枚举类型通用实现方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一...

    疯狂阿贾克斯11212021-06-15
  • Java教程详解Spring Cloud Config采用Git存储时两种常用的配置策略

    详解Spring Cloud Config采用Git存储时两种常用的配置策略

    这篇文章主要介绍了详解Spring Cloud Config采用Git存储时两种常用的配置策略,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看...

    程序员DD4602021-05-21
  • Java教程Java之操作Redis案例讲解

    Java之操作Redis案例讲解

    这篇文章主要介绍了Java之操作Redis案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...

    一棵小白杨站在哨所旁4692021-11-08
  • Java教程总结Junit4,Junit5,Jupiter之间的联系

    总结Junit4,Junit5,Jupiter之间的联系

    Jupiter和Junit5之间有什么联系?Jupiter提供了哪些新的测试方法?如何用IDEA和Jupiter生成可读性更好的测试报告?文中有非常详细的说明,需要的朋友可以参考...

    yanggfann9502021-09-17
  • Java教程Java面试题冲刺第二十六天--实战编程

    Java面试题冲刺第二十六天--实战编程

    这篇文章主要为大家分享了最有价值的三道java实战面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,感兴趣的小伙伴们可以参...

    _陈哈哈10592021-12-07
  • Java教程利用Java实现红黑树

    利用Java实现红黑树

    红黑树是众多“平衡的”搜索树模式中的一种,在最坏情况下,它相关操作的时间复杂度为O(log n),接下俩小编将子啊下文详细介绍Java是如何实现红黑树的...

    胡不慌9452022-01-03
  • Java教程这一次搞懂Spring的Bean实例化原理操作

    这一次搞懂Spring的Bean实例化原理操作

    这篇文章主要介绍了这一次搞懂Spring的Bean实例化原理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    夜勿语2672020-08-26
  • Java教程SpringMVC 如何使用注解完成登录拦截

    SpringMVC 如何使用注解完成登录拦截

    这篇文章主要介绍了SpringMVC 如何使用注解完成登录拦截,帮助大家更好的理解和学习使用springMVC,感兴趣的朋友可以了解下...

    双鬼带单11132021-08-17