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.pswp.cn/news/453544.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453544.shtml
英文地址,請注明出處:http://en.pswp.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;這無疑是件非常郁悶的工作。…