java中遇到过的String的一些特性
1.string对象是final的?
1 String str="asdfdf";
2 str.replace("as","");
3 System.out.println(str);//asdfdf
4 str=str.replace("as","");
5 System.out.println(str);//dfdf
2.字符串的切割
遇到根据url获取参数的问题: enterId = Long.parseLong(target.split("/")[2]);这个要处理切割字符串问题splitapi里是这样的: public String[] split(String regex,int limit)根据匹配给定的正则表达式来拆分此字符串。 此方法返回的数组包含此字符串的子字符串,每个子字符串都由另一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止。数组中的子字符串按它们在此字符串中出现的顺序排列。如果表达式不匹配输入的任何部分,那么所得数组只具有一个元素,即此字符串。limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。 例如,字符串 "boo:and:foo" 使用这些参数可生成以下结果: Regex Limit 结果 : 2 { "boo", "and:foo" } : 5 { "boo", "and", "foo" } : -2 { "boo", "and", "foo" } o 5 { "b", "", ":and:f", "", "" } o -2 { "b", "", ":and:f", "", "" } o 0 { "b", "", ":and:f" } public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。 该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。 例如,字符串 "boo:and:foo" 使用这些表达式可生成以下结果: Regex 结果 : { "boo", "and", "foo" } o { "b", "", ":and:f" } 参数:regex - 定界正则表达式 返回:字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的 抛出: PatternSyntaxException - 如果正则表达式的语法无效 |
---|
3.对json字符串去空值
上传代码错误导致数据库中地址存储有问题,有一些空的value,还有结尾多了两个键值对,当然也有的没问题。对sql掌握比较差,于是选择了用java处理,更新数据库。
处理的数据对象是这样的:
1 '{"showImg_1":"/upload/webHome/template/4ddedebb-7615-4686-b27a-b515a6a5a2cc.jpg","showImg_2":"/upload/webHome/template/2c0806ee-6165-4b95-949d-340ddad18171.jpg","showImg_3":"/upload/webHome/template/35464a57-a987-4e40-91b4-f5b33e343f46.jpg","showImg_4":"/upload/webHome/template/9bddbbd6-1ad2-4290-b087-caa26bf93197.jpg","showImg_5":"/upload/webHome/template/604b7531-384b-4052-93cb-e5d51182023b.jpg","showImg_6":"/upload/webHome/template/4673cf82-fa07-4acc-ac7c-e5c7ef9af687.jpg","showImg_7":"","showImg_8":"","emplate.quickmark":"/upload/webHome/template/27b4cb88-b3b2-4046-bedd-c4ad92735310.jpg","emplate.img":"/upload/webHome/template/7949e9eb-eb86-4d54-ab09-1271ea202b2e.jpg"}'
用的jfinal框架:
1 /**
2 * 处理错误数据
3 */
4 public void manageSQL(){
5 String sql="select * from _table";
6 List<Record> list=Db.find(sql);
7 setAttr("length",list.size());
8 for(int i=0; i<list.size(); i++){
9 //取出一条记录
10 Record r=list.get(i);
11 //取出json数据
12 String json=r.getStr("showImg");
13 setAttr("old=",json);
14 //去除emplate为key的开头的错误数据
15 int ind=json.indexOf(","emplate");
16 if(ind>0){
17 json=json.substring(0, ind)+"}";
18 }
19 setAttr("new=",json);
20 //去除value为""的元素
21 json=json.replaceAll("((?<=\{)"\w+":"",|,*"\w+":"")", "");
22 setAttr("all:"+i,json);
23
24 System.out.println(json+"=========");
25
26 //入库保存更新
27 r.set("showImg", json);
28
29 Db.update("home_template",r);
30
31 }
32
33 renderJson();
34 }
4.String对象的一些方法:
length() - 返回长度,注意和js中不同,js里面是length属性。
对应长度:Array的长度-length;List的长度-size();
- java学习手册-java 新手入门必看的30个题
- Java并发编程的艺术(五)——中断
- 简易的深度学习框架Keras代码解析与应用
- Java并发编程的艺术(六)——线程间的通信
- 轻量级线程池的实现
- python根据BM25实现文本检索
- 稳扎稳打JavaScript(一)——作用域链内存模型
- 稳扎稳打JavaScript(二)——图解对象内存模型
- Swift学习资源
- 稳扎稳打JavaScript(三)——创建对象的几种方式
- 快速教程:使用Cython来扩展Python/NumPy库
- 稳扎稳打JavaScript(四)——闭包
- JavaScript奇淫技巧(一)
- 动态规划法(四)——0/1背包问题
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 设计模式速览
- 序列模型——吴恩达深度学习课程笔记(五)
- 30分钟学会pyecharts数据可视化
- 用Keras从零开始6步骤训练神经网络
- Keras结构化数据预处理范例——Titanic生存预测
- 从原理上搞懂如何设置线程池参数大小?
- Keras图像数据预处理范例——Cifar2图片分类
- Keras文本数据预处理范例——IMDB影评情感分类
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof 使用详解
- Go 垃圾回收
- 如何在SpringBoot中异步请求和异步调用
- 实现 memcached 客户端:TCP、连接池、一致性哈希、自定义协议
- 30分钟学会LightGBM
- 三种计算图
- 低阶API示范