String temp = “12”;
short sh = Short.parseShort(temp);
最好再try,catch一下。
String str = "14";
char ch1 = str.charAt(0); //1
char ch2 = str.charAt(1); //4
Integer num1 = Integer.valueOf(str.charAt(0)); //49
Integer num2 = Integer.valueOf(str.charAt(1)); //52
Integer num3 = Integer.valueOf(String.valueOf(str.charAt(0))); //1
Integer num4 = Integer.valueOf(String.valueOf(str.charAt(1))); //4
输出分别是:
===============ch1==============1
===============ch2==============4
===============num1==============49
===============num2==============52
===============num3==============1
===============num4==============4
@Test
public void testtemp() {
System.out.println("========================判断一个字符串是否为数字型=======================================");
String numberStr = "456465446465445445454";
String str24K = "d4sa4da4d6sa4d";
Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
System.out.println(pattern.matcher(numberStr).matches());//true
System.out.println(pattern.matcher(str24K).matches());//false
System.out.println("========================提取字符串中的数字=======================================");
String str1111 = "";
String str2222 = "网商大会回家33双怠速33是的99sds44";
String str3333 = "sdsadsada";
String str4444 = "双怠速收到收到";
String str5555 = "22222222222";
String regEx="[^0-9]";
Pattern p = Pattern.compile(regEx);
Matcher m1 = p.matcher(str1111);
System.out.println( m1.replaceAll("").trim());//
Matcher m2 = p.matcher(str2222);
System.out.println( m2.replaceAll("").trim());//33339944
Matcher m3 = p.matcher(str3333);
System.out.println( m3.replaceAll("").trim());//
Matcher m4 = p.matcher(str4444);
System.out.println( m4.replaceAll("").trim()); //
Matcher m5 = p.matcher(str5555);
System.out.println( m5.replaceAll("").trim());//22222222222
}
输出为:
========================判断一个字符串是否为数字型=======================================
true
false
========================提取字符串中的数字=======================================
33339944
22222222222
map和object转换
object→map,object→javabean,object→list
fastjson依赖包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.4</version>
</dependency>
Object datas = "{\\\"password\\\":\\\"123456\\\",\\\"username\\\":\\\"张三\\\"}";
注意datas并不是json格式的字符串,经过toJSONString才会转换为json
//转 MAP 这种方式经常会出错 见下面的方法一
Map,Object> map = JSONObject.parseObject(JSONObject.toJSONString(datas));
//转JavaBean
User user = JSON.parseObject(JSONObject.toJSONString(datas),User.class);
//转List
List users = JSONArray.parseArray(JSONArray.toJSONString(datas),User.class);
List
public class Books {
private Integer id;
private String bookname;
private Double prices;
private Integer counts;
private int typeid;
}
public class HaveBooks {
private String UUID;
private Books books;
}
另一种形式Object,向Map,JavaBean,List等的转换
首先,这个Object的形式为用”=“等号连接的键值对,这个其实是Map.toString的结果
例如:{name=张三, 年纪=三年二班, 性别=男}
@Test
public void test_3(){
Map,String> map = new HashMap<>();
map.put("name","张三");
map.put("性别","男");
map.put("年纪","三年二班");
System.out.println(map.toString());
//输出为:
//{name=张三, 年纪=三年二班, 性别=男}
}
对于这种 Map.toString 后再次转为Map或者JavaBean有以下两种处理方式
方式一:Gson 或者 Gson+其他
1.Gson 可以将 Map.toString后的转化为JSONObject ,然后可以用Gson自带的或者其他技术进行到Map或者javaBean的转换
2.依赖
>
>com.google.code.gson >
>gson >
>2.8.6 >
>
3.代码
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
@Test
public void test_2(){
Map,String> map_3 = new HashMap<>();
map_3.put("name","qqqqq");
map_3.put("className","三年二班");
map_3.put("age","30");
String s3 = map_3.toString();
//将字符串转化为 JsonObject
JsonObject respJson=new JsonParser().parse(s3).getAsJsonObject();
//转化为JsonObject 后 你可以用任何技术 进行转换 下面是 用gson自带的API进行转换
Gson gson = new Gson();
Type type = new TypeToken{}.getType();
//首先是转map
Map, String> k_3 = gson.fromJson(respJson, type);
for (Map.Entry stringStringEntry : k_3.entrySet()) {
System.out.println(stringStringEntry.getKey() + "===" + stringStringEntry.getValue());
}
//然后是转 javaBean
ManInfo info = gson.fromJson(respJson, ManInfo.class);
System.out.println(info.toString());
}
方式二: json-lib
1,这种方式在面对键值对中value是String类型时,操作比较繁琐,当然可以通过配置JsonConfig 来解决 ,这里不建议使用
//这种方法 除了 value 是字符串类型 需要 加 转义符 外 其他类型 就不需要加转义符 比如 int
//value 是String 类型
Map,String> map_1 = new HashMap<>();
map_1.put("name","\"qqqqq\"");
map_1.put("className","\"三年二班\"");
//需要对 val是字符串类型再加一层 双引号
2.依赖
<!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
net.sf.json-lib
json-lib
2.4
jdk15
3.代码
@Test
public void test_1(){
//这种方法 除了 value 是字符串类型 需要 加 转义符 外 其他类型 就不需要加转义符 比如 int
//value 是String 类型
Map,String> map_1 = new HashMap<>();
map_1.put("name","\"qqqqq\"");
map_1.put("className","\"三年二班\"");
String s1 = map_1.toString();
// JSONObject fromObject(Object object, JsonConfig jsonConfig)
Map,String> k_1 = JSONObject.fromObject(s1);
for (Map.Entry stringObjectEntry : k_1.entrySet()) {
System.out.println(stringObjectEntry.getKey()+"==="+stringObjectEntry.getValue());
}
//转为JsonObject
JSONObject object = JSONObject.fromObject(s1);
System.out.println(object.toString());
//value 是Integer 类型
Map,Integer> map_2 = new HashMap<>();
map_2.put("qwer",1);
map_2.put("wer",2);
String s2 = map_2.toString();
Map,Integer> k_2 = JSONObject.fromObject(s2);
// JSONObject fromObject(Object object, JsonConfig jsonConfig)
for (Map.Entry stringIntegerEntry : k_2.entrySet()) {
System.out.println(stringIntegerEntry.getKey()+"==="+stringIntegerEntry.getValue());
}
}
方法 | 介绍 |
---|---|
spilt | 根据匹配的分隔符来拆分字符串 |
length | 返回字符串长度 |
trim | 返回字符串去掉前面和尾部空格的版本 |
replace(String A,String B) | 返回字符串用B替换A后的字符串 |
indexOf(String A) | 返回字符串中,第一次出现A的位置,从0开始 |
lastIndexOf(String A) | 返回字符串中,最后一次出现B的位置,从0开始 |
substring(int A)/substring(int A,int B) | 返回从A开始截取后的字符串,如果没有填B,那么就是A之后的全部部分,注意,是从0开始的 |
toLowerCase/toUpperCase | 返回全部变为小/大写的字符串 |
下面是它们的综合应用 |
@Test
public void test() {
String strDemo1 = " 2Cm,,,,a,,,B,,3 ";
String[] strDemo2 = strDemo1.split(",");
//join将数组重新拼接成字符串,用右边的分隔符分割
System.out.println("==split=="+StringUtils.join(strDemo2,"$")+"==长度为=="+strDemo2.length);
System.out.println("==trim/replace=="+strDemo1.replace(",", "").trim());
//算最前面的2
System.out.println("==indexof=="+strDemo1.indexOf("2Cm")+"==lastIndexOf=="+strDemo1.lastIndexOf("2Cm"));
//包前不包后
System.out.println("==substring=="+strDemo1.substring(strDemo1.indexOf("2Cm"),strDemo1.lastIndexOf("3")).toLowerCase());
}
输出为:
==split== 2Cm$$$$a$$$B$$3 ==长度为==10
==trim/replace==2CmaB3
==indexof==1==lastIndexOf==1
==substring==2cm,,,,a,,,b,,