java 判断数字变化增减_java String 强化操作 判断数字 字符串转阿拉伯数字,相似度等等...

importjava.io.BufferedReader;importjava.io.StringReader;importjava.util.ArrayList;importjava.util.List;importjava.util.regex.Matcher;importjava.util.regex.Pattern;/***@author

*/

public classStrings {/*** 全角转半角

*

*@paramsbc 全角字符

*@returnString*/

public staticString toDBC(String sbc) {char c[] =sbc.toCharArray();for (int i = 0; i < c.length; i++) {if (c[i] == '\u3000')

c[i]= ' ';else if (c[i] > '\uFF00' && c[i] < '\uFF5F')

c[i]= (char) (c[i] - 65248);

}return newString(c);

}/*** 判断是否为空或 null值

*

*@paramstr String

*@returntrue or false*/

public static booleannullOrEmpty(String str) {if (str == null)return true;

String trim=trim(str);return trim.length() == 0 || "null".equals(trim.toLowerCase());

}/*** 去除String前后空格和全角空格

*

*@paramstr 要处理的String

*@paramsmb 自定义无效字符

*@return去空格的String*/

public static String trim(String str, char...smb) {int len =str.length();int st = 0;char[] val =str.toCharArray();while ((st < len) && (val[st] <= ' ' || val[st] == ' '|| containsChar(smb, val[st]))) st++;while ((st < len) && (val[len - 1] <= ' ' || val[len - 1] == ' ')) len--;return ((st > 0) || (len < str.length())) ?str.substring(st, len) : str;

}private static boolean containsChar(char[] cs, charc) {if (cs.length > 0)for (chars : cs)if (c ==s)return true;return false;

}/*** 封装正则表达式命中的值

*

*@paramstr 源字符串

*@parampattern 正则

*@returnOptional*/

public static Listgroup(String str, String pattern) {returngroup(str, Pattern.compile(pattern));

}public static Listgroup(String str, Pattern pattern) {

Matcher matcher=pattern.matcher(str);

List group = new ArrayList<>();while(matcher.find()) {

group.add(matcher.group());

}returngroup;

}/*** 净长: 全角字符算2

*

*@paramstr 字符串

*@returnint*/

public static intnetLength(String str) {int length = 0;for (int i = 0; i < str.length(); i++) {char c =str.charAt(i);

length+=charLength(c);

}returnlength;

}public static int charLength(charc) {return ((int)c) >= 256 ? 2 : 1;

}public static booleanisNumber(String str) {

Pattern pattern= Pattern.compile("^[-+]?[\\d]*$");return str != null &&pattern.matcher(str).matches();

}/*** 字符串转阿拉伯数字

*

*@paramstr 字符串

*@returnlong类型阿拉伯数字

*@since2018.1.26*/

public static longtoArabic(String str) {long result = 0;int buffer = 0, ch = 0;

StringBuilder back= newStringBuilder();boolean backSwitch = true;for (charc : str.toCharArray()) {int i = 0;if (c > 47 && c < 58) {

ch= c - 48;

}else if (c > 65295 && c < 65306) {

ch= c - 65296;

}else{//noinspection StatementWithEmptyBody

while (NUMBER_CHAR[i] != c && ++i

while (UNIT_CHAR[j] != c && ++j

backSwitch= false;if (j < 2) {

result+= (buffer + ch) *UNIT_NUMBER[j];

buffer= 0;

}else{if (ch == 0)

ch= 1;

buffer+= ch *UNIT_NUMBER[j];

ch= 0;

}

}else{

ch=NUMBER[i];

}

}if(backSwitch)

back.append(ch);

}if (nullOrEmpty(back.toString())) return 0L;return backSwitch ? Long.parseLong(back.toString()) : result + buffer +ch;

}public static doublesimilar(String str1, String str2) {/** 先移除无意义字符,再比较长短,否则

* 如果长串中无效字符过多会出现 ArrayIndexOutOfBoundsException*/String newStrA=removeSign(str1);

String newStrB=removeSign(str2);if (newStrA.length()

String temps=newStrA;

newStrA=newStrB;

newStrB=temps;

}returnlongestCommonSubstring(newStrA, newStrB);

}/*** 将字符串的所有数据依次写成一行*/

private staticString removeSign(String str) {

StringBuilder sb= newStringBuilder();for (charitem : str.toCharArray()) {if(charReg(item)) {

sb.append(item);

}

}returnsb.toString();

}/*** 判断字符是否为汉字,数字和字母,

* 因为对符号进行相似度比较没有实际意义,故符号不加入考虑范围。*/

private static boolean charReg(charcharValue) {return (charValue >= 0x4E00 && charValue <= 0X9FA5) || (charValue >= 'a' && charValue <= 'z')|| (charValue >= 'A' && charValue <= 'Z') || (charValue >= '0' && charValue <= '9');

}/*** 求公共子串,采用动态规划算法。

* 其不要求所求得的字符在所给的字符串中是连续的。*/

private static doublelongestCommonSubstring(String strA, String strB) {char[] chars_strA =strA.toCharArray();char[] chars_strB =strB.toCharArray();int m =chars_strA.length;int n =chars_strB.length;/** 初始化矩阵数据,matrix[0][0]的值为0,

* 如果字符数组chars_strA和chars_strB的对应位相同,则matrix[i][j]的值为左上角的值加1,

* 否则,matrix[i][j]的值等于左上方最近两个位置的较大值,

* 矩阵中其余各点的值为0.*/

int[][] matrix = new int[m + 1][n + 1];for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {if (chars_strA[i - 1] == chars_strB[j - 1]) {

matrix[i][j]= matrix[i - 1][j - 1] + 1;

}else{

matrix[i][j]= Math.max(matrix[i][j - 1], matrix[i - 1][j]);

}

}

}return matrix[m][n] * 1.0 /strA.length();

}private static final char[] NUMBER_CHAR = {'〇', '零', '一', '两', '二', '三', '四', '五', '六', '七', '八', '九'};private static final char[] UNIT_CHAR = {'亿', '万', '千', '百', '十'};private static final long[] UNIT_NUMBER = {100000000, 10000, 1000, 100, 10};private static final int[] NUMBER = {0, 0, 1, 2, 2, 3, 4, 5, 6, 7, 8, 9};

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453544.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[CareerCup] 4.7 Lowest Common Ancestor of a Binary Search Tree 二叉树的最小共同父节点

4.7 Design an algorithm and write code to find the first common ancestor of two nodes in a binary tree. Avoid storing additional nodes in a data structure. NOTE: This is not necessarily a binary search tree. LeetCode上的原题&#xff0c;请参见我之前的博客Lo…

让猎头雨天送伞--大话猎头

让猎头雨天送伞--大话猎头(1) Arthur毕业之后&#xff0c;在一同家公司的研发部工作了7年&#xff0c;从初级开发工程师一直做到项目经理&#xff0c;过手十几个大项目&#xff0c;现在带领8人的研发团队。猎头最近频频与他沟通&#xff0c;希望他考虑几个外企研发主管的机会…

android布局的一些知识

(一)android:layout_alignParentBottom 控制该组件是否与布局容器底端对齐android:layout_alignParentLeft 控制该组件是否与布局容器左边对齐android:layout_alignParentRight 控制该组件是否与布局容器右边对齐android:layout_alignParentTop 控制该组件是否与布局容器顶端对…

IE8兼容问题总结---trim()方法

1.IE8不支持,jquery的trim()去空格的方法 错误表现 : 会报错,对象不支持此属性或方法; 解决办法 : 使用正则匹配空格 例如 : /^\s|\s$/greplace(/^\s|\s$/g,"");转载于:https://www.cnblogs.com/lizhiwei8/p/8392589.html

java的流套接_java-使用流关闭套接字

我的以下问题非常简单.这是我的代码&#xff1a;public class Protocol implements Runnable {private SSLSocket socket null;private InputStream is null;private OutputStream os null;...public Protocol(Socket s) {socket (SSLSocket)s;is socket.getInputStream()…

简历撰写

没什么可写的项目&#xff0c;或者自己说不太清&#xff0c;效果也不明显的项目&#xff0c;就不要写简历上了转载于:https://www.cnblogs.com/brainstorm/p/7942669.html

如何真正做好项目管理?

项目要能顺利执行其实并不简单&#xff0c;如果又渉及多个单位合作&#xff0c;困难程度又大增。 从项目经理的工作日志片段&#xff0c;可以看出每个项目经理应该都有自已悲惨的故事&#xff0c;程度恐怕只有过之而无不及。项目经理到底应该有那些看家本领呢&#xff1f; …

日历视图的XML属性

日历视图的XML属性 : -- 设置样式 : android:dateTextAppearance, 设置日期文字显示样式; -- 设置首日 : android:firstDayOfWeek, 设置星期几是每周的第一天, 默认是周一; -- 选中颜色 : android:focusedMonthDateColor, 设置选中日期所在月份日期颜色; -- 最大日期 : android…

作业30-首页列表显示全部问答,完成问答详情页布局

首页列表显示全部问答&#xff1a;将数据库查询结果传递到前端页面 Question.query.all()前端页面循环显示整个列表。问答排序app.route(/) def index():context{questions:Question.order_by(creat_time).query.all()}return render_template("index.html",**contex…

java重置radiobutton的选项_求助:这道题显示radiobutton男女的功能和重置功能怎么做...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼package org.demo.app.gui; import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax…

PopupWindow和AlertDialog区别

1 第一个重要的区别是AlertDialog不能指定显示位置&#xff0c;只能默认显示在 屏幕最中间&#xff08;当然也可以通过设置WindowManager参数来改变位置&#xff09;。 而PopupWindow是可以指定显示位置的&#xff0c;随便哪个位置都可以&#xff0c;更加灵活。 2 AlertDia…

Scala学习之爬豆瓣电影

简单使用Scala和Jsoup对豆瓣电影进行爬虫&#xff0c;技术比較简单易学。写文章不易&#xff0c;欢迎大家採我的文章&#xff0c;以及给出实用的评论&#xff0c;当然大家也能够关注一下我的github&#xff1b;多谢。 1、爬虫前期准备 找好须要抓取的链接&#xff1a;https://m…

新兴的多媒体格式——MXF 文件格式分析 和简介

1. 新兴的多媒体格式 MXF格式已经被推出几年了&#xff0c; 从当初一个陌生的不为人们 重视的格式 逐渐获得了业内人士的认知和认可&#xff0c; 现如今正被广泛应用于广播电视 与后期制作领域&#xff0c; 且有不断扩大之势&#xff0c; 松下公司推出的基于PII卡的 无磁带式…

[JMX一步步来] 9、基于JBoss来写MBean

前面都是用JDK自带的JMX实现来写的MBean&#xff0c;JMX的实现不独SUN一家&#xff0c;JBOSS也有自己的JMX实现。如果你使用JBOSS来做WEB服务器&#xff0c;那么基于JBOSS的实现来写MBean&#xff0c;是一个不错的选择。象我们公司就是用JBOSS的&#xff0c;因此所有MBean都是基…

Point和PointF

Point和PointF Point在GDI的结构中是最简单的&#xff0c;在数学上它完全等价于一个二维矢量&#xff0c;包含两个公共整型属性&#xff0c;表示它与某个特定位置的水平和垂直距离。例如&#xff0c;为了从点A到点B&#xff0c;需要水平移动11个单位&#xff0c;并向下垂直移动…

开博第一篇,聊聊 最基本的 “==” 与 “===”区别

“”与“”都是比较左右两个值是否相等&#xff0c;但它们的原理是不同的&#xff0c;特别要理解“”的比较。 “”是弱比较&#xff0c;如果左右两边的比较数类型不同&#xff0c;它们会转换成相同类型&#xff0c;再进行比较&#xff0c;那么问题来了&#xff0c;它们是怎么进…

面向对象的故事~数据底层操作告诉了我们接口,抽象类,继承与多态性的使用~续(TestBase继承ITest是多余的?)...

在我上一篇文章发表后&#xff0c;收到了很多博友的回复&#xff0c;其中有一位博友提了一个问题&#xff0c;TestBase 继承了ITest是多余的&#xff0c;我认为&#xff0c;我有必要再写一篇文章来说明一下&#xff0c;TestBase为什么要继承ITest,当然各位也可以再次发表自己的…

java样式是什么_java css样式 css样式的种类 选择器 文本相关样式 背景相关样式 边框 盒子模式...

今日内容:? CSS样式? CSS样式的种类? 选择器? 文本相关样式? 背景相关样式? 边框? 盒子模式select标签下拉列表标签,常用于单选和多选,是一个组合标签,需要和子标签option一起搭配使用,不会独占一行常用属性:? name属性:发送给服务器使用的? multiple属性:不写默认单选…

surfaceView和View区别

surfaceView和View最本质的区别在于&#xff1a; ---------------------------------------------------------------------------------------------------surfaceView是在一个新起的单独线程中可以重新 绘制画面&#xff0c;而View必须在UI的主线程中更新画面。那么在UI的主线…

一个漂亮的输出MySql数据库表结构的PHP页面

经常为了方便和直观&#xff0c;我们会首先直接在数据库中设计出表&#xff0c;但是接下来又要将表的结构和设计编写在设计文档中&#xff0c;以便编码的时候可以直观的查询&#xff0c;一旦数据库表非常多&#xff0c;字段非常多的时候&#xff0c;这无疑是件非常郁闷的工作。…