判断字符串是否不为空且不由空白字符串组成

本文介绍了Java中Apache Commons Lang库的StringUtils类的使用方法,包括isNotBlank、isBlank、isEmpty、isNotEmpty等方法的区别及应用场景,并讲解了字符串切片(slice)方法在前端的使用。

最近学会了StringUtils.isNotBlank的使用方法,判断字符串是否不为空且不由空白字符串组成。
StringUtils.isNotBlank(null) = false
StringUtils.isNotBlank("") = false
StringUtils.isNotBlank(" “) = false
StringUtils.isNotBlank(” “) = false
StringUtils.isNotBlank(”\t \n \f \r") = false
StringUtils.isNotBlank("\b") = true
StringUtils.isNotBlank(“bob”) = true
StringUtils.isNotBlank(" bob ") = true
原先我在代码里判断是以下这样的:
If(!=null.equals(key) && key!=null && !””.equals(key));
在这里插入图片描述

现在直接用工具类比较简单方便。
我去查阅了一下,java中,StringUtils类中的一些常用方法。
boolean isBlank(String str)
//判断某字符串是否为空或长度为0或由空白符(whitespace)构成
StringUtils.isBlank(null) = true
StringUtils.isBlank("") = true
StringUtils.isBlank(" “) = true
StringUtils.isBlank(” “) = true
StringUtils.isBlank(”\t \n \f \r") = true //对于制表符、换行符、换页符和回车符StringUtils.isBlank()均识为空白符
StringUtils.isBlank("\b") = false //"\b"为单词边界符
StringUtils.isBlank(“bob”) = false
StringUtils.isBlank(" bob ") = false

boolean isEmpty(String str)
//判断某字符串是否为空,为空的标准是str==null或str.length()==0
StringUtils.isEmpty(null) = true
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" “) = false //注意在StringUtils中空格作非空处理
StringUtils.isEmpty(” “) = false
StringUtils.isEmpty(“bob”) = false
StringUtils.isEmpty(” bob ") = false

boolean isNotEmpty(String str)
//判断某字符串是否非空,等于!isEmpty(String str)
StringUtils.isNotEmpty(null) = false
StringUtils.isNotEmpty("") = false
StringUtils.isNotEmpty(" “) = true
StringUtils.isNotEmpty(” “) = true
StringUtils.isNotEmpty(“bob”) = true
StringUtils.isNotEmpty(” bob ") = true

其次,还学到了前台的字符串切割方法:slice,语法为stringObject.slice(start,end)
第一个参数指定字符串开始的位置,第二个表示字符串结束的位置。负数是从字符串的尾部算起

最后,如果赋值一直失败,先找是前端还是后端问题,缩小问题范围。一定要
书写规范,多一个空格也会导致赋值失败!

private SiffEntity ReadToSiffEntity(FileInfo fileInfo) { SiffEntity siffentity = new SiffEntity(); // “*”表示其前的内容出现零次或多次,"\s"表示任意一个空白字符 如\n、\s之类的, "()"将括号内的内容组合成一个独立的单元 还有一个捕获和非捕获的作用 // “+”表示其前的内容出现一次或多次 string testprogram_pattern = @"Device Name *: (\S*)"; // “|”表示“或”,“[0-9A-Z]”表示任何一个字符 小数点后的信息没有录入 string lotno_pattern = @"(LOT|Lot No.|LotNo) *: ([0-9A-Z]*)"; // “/s”表示任意一个空白字符 但是/S表示任意一个非空白字符!!!! // 模式与1061格式不匹配 1061的ID数字并未固定为两位数 //string waferid_pattern = @"Wafer ID *: \S*-(\d{2})"; string waferid_pattern = @"Wafer ID *: \S*-(\d*)"; // “\w”表示任意一个由 数字、大小写字母和下划线 组成的单词 string flat_pattern = @"Flat/Notch *: (\w*)"; string operator_pattern = @"Operator Id *: (.*)"; string probercard_pattern = @"Card Id *: (.*)"; string loadboard_pattern = @"Tester id *: (.*)"; string station_pattern = @"Probe id *: (.*)"; string measuretime_pattern = @"Testing Finish *: (.*)"; // 行列数正则表达式 string col_pattern = @"Map Column *: ([1-9]*)"; string row_pattern = @"Map Row *: ([1-9]*)"; // 正则表达式捕获的字符串 string col_string = ""; string row_string = ""; // FileShare用于控制其他线程或进程能否同时访问该文件 Read表示只读 using (FileStream fs = new FileStream(fileInfo.FullName, FileMode.Open, FileAccess.Read, FileShare.Read)) // 逐行读取 using (StreamReader reader = new StreamReader(fs)) { //添加布尔值判断是否在读wafer map bool isReadingWaferMap = false; while (!reader.EndOfStream) { //20251127王豪豪修改:修改读取逻辑为,从[WAFER MAP]开始,到[BIN DEFINATION]结束 var lineContent = reader.ReadLine().Trim(); // 检测标记行并更新状态 if (Regex.IsMatch(lineContent, @"^\[ WAFER MAP\]$", RegexOptions.IgnoreCase)) { isReadingWaferMap = true; continue; // 跳过标记行 } if (Regex.IsMatch(lineContent, @"^\[ BIN SUMMARY\]$", RegexOptions.IgnoreCase)) { isReadingWaferMap = false; // 不break,继续处理后续内容 } // RegexOptions.Ignore 表示不区分大小写 if (Regex.IsMatch(lineContent, testprogram_pattern, RegexOptions.IgnoreCase)) // “.Groups[1]”输出"()"的捕获功能 表示输出第一个捕获结果 siffentity.TestProgram = Regex.Match(lineContent, testprogram_pattern, RegexOptions.IgnoreCase).Groups[1].ToString(); else if (Regex.IsMatch(lineContent, lotno_pattern, RegexOptions.IgnoreCase)) siffentity.Lot = Regex.Match(lineContent, lotno_pattern, RegexOptions.IgnoreCase).Groups[2].ToString(); else if (Regex.IsMatch(lineContent, waferid_pattern, RegexOptions.IgnoreCase)) siffentity.WaferNumber = Regex.Match(lineContent, waferid_pattern, RegexOptions.IgnoreCase).Groups[1].ToString(); else if (Regex.IsMatch(lineContent, flat_pattern, RegexOptions.IgnoreCase)) siffentity.FlatOrientation = Regex.Match(lineContent, flat_pattern, RegexOptions.IgnoreCase).Groups[1].ToString(); else if (Regex.IsMatch(lineContent, operator_pattern, RegexOptions.IgnoreCase)) siffentity.Operator = Regex.Match(lineContent, operator_pattern, RegexOptions.IgnoreCase).Groups[1].ToString(); else if (Regex.IsMatch(lineContent, probercard_pattern, RegexOptions.IgnoreCase)) siffentity.ProbeCard = Regex.Match(lineContent, probercard_pattern, RegexOptions.IgnoreCase).Groups[1].ToString(); else if (Regex.IsMatch(lineContent, loadboard_pattern, RegexOptions.IgnoreCase)) siffentity.LoadBoard = Regex.Match(lineContent, loadboard_pattern, RegexOptions.IgnoreCase).Groups[1].ToString(); else if (Regex.IsMatch(lineContent, station_pattern, RegexOptions.IgnoreCase)) siffentity.Station = Regex.Match(lineContent, station_pattern, RegexOptions.IgnoreCase).Groups[1].ToString(); // 读取行列数 else if (Regex.IsMatch(lineContent, col_pattern, RegexOptions.IgnoreCase)) col_string = Regex.Match(lineContent, col_pattern, RegexOptions.IgnoreCase).Groups[1].ToString(); else if (Regex.IsMatch(lineContent, row_pattern, RegexOptions.IgnoreCase)) row_string = Regex.Match(lineContent, row_pattern, RegexOptions.IgnoreCase).Groups[1].ToString(); else if (Regex.IsMatch(lineContent, measuretime_pattern, RegexOptions.IgnoreCase)) { // 处理时间文本 string measureTimeString = Regex.Match(lineContent, measuretime_pattern, RegexOptions.IgnoreCase).Groups[1].ToString(); if (measureTimeString.Length == 14) { siffentity.MeasureTime = ("20" + measureTimeString).Replace(" ", "_").Replace("-", "/") + ":00"; } else if (measureTimeString.Length == 17) { siffentity.MeasureTime = ("20" + measureTimeString).Replace(" ", "_").Replace("-", "/"); } else if (measureTimeString.Length == 16) { siffentity.MeasureTime = measureTimeString.Replace(" ", "_").Replace("-", "/") + ":00"; } else { siffentity.MeasureTime = (measureTimeString).Replace(" ", "_").Replace("-", "/"); } } // 开始处理晶圆map的内容 // 不包含“=”不由空白字符组成正在读取wafermap与bin定义中间的内容 else if (isReadingWaferMap && !lineContent.Contains("=") && !string.IsNullOrWhiteSpace(lineContent))//1.修改读取逻辑 { // 获取 BinDefinition if (siffentity.BinDefinition == null) { // 需要设置csv文件名的格式 // substring 返回前四个字符 // 在Translaotor10中直接写入完整的csv文件地址 //string bindefFile = Path.Combine(BinDefinitionFolder, string.Format("{0} Jade Bin Definiton.csv", siffentity.Product.Substring(0, 4))); string bindefFile = Path.Combine(BinDefinitionFolder, "0851-CP1.csv"); // read的是CSV文件 siffentity.BinDefinition = ReadBinDefinition(bindefFile);//2.修改读取bindef文件格式为csv } // 处理晶圆内容 StringBuilder sb = new StringBuilder(); // 对每行的每个字符进行处理 foreach (var c in lineContent) { string cString = c.ToString(); if (siffentity.BinDefinition.Keys.Contains(cString)) { string binNum = siffentity.BinDefinition[cString].BinNumber; // BinSummary是用来统计各项总数的? if (siffentity.BinSummary.ContainsKey(binNum)) { siffentity.BinSummary[binNum]++; } else { siffentity.BinSummary.Add(binNum, 1); } // sb是用来记录单行的 sb.Append(binNum); } else if (NoValueDieCharArray.Contains(cString)) { sb.Append(SiffEntity.NoValueDie); } else if (NoDieCharArray.Contains(cString)) { sb.Append(SiffEntity.NoDie); } else { string binNumber = GetBinNumber(cString); if (!binNumber.Equals("")) { //定义为出现在Bindef中的Bin BinDef binDef = new BinDef() { BinName = cString, BinSpec = "B", BinNumber = binNumber, Description = cString + "?" }; siffentity.BinDefinition.Add(cString, binDef); siffentity.BinSummary.Add(binNumber, 1); sb.Append(binNumber); } } } siffentity.WaferMapStr.Add(sb.ToString()); } } } // 检测行数列数是否匹配 if (siffentity.Columns != col_string) throw new Exception(string.Format("Map列数不匹配!map文件显示列数为{0},实际列数为{1}", col_string,siffentity.Columns)); if (siffentity.Rows != row_string) throw new Exception(string.Format("Map行数不匹配!map文件显示行数为{0},实际行数为{1}", row_string, siffentity.Rows)); return siffentity; } 详解上述code
最新发布
11-28
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值