欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

java代碼實(shí)現(xiàn)s表達(dá)式,java中%s

用Java語言編寫:將代數(shù)式s=a*a+2*a*b+b*b寫成一個賦值表達(dá)式語句。 該怎么做啊,各位幫幫忙?????

s=a*a+2*a*b+b*b 已經(jīng)是一個賦值表達(dá)式了,把表達(dá)式a*a+2*a*b+b*b的運(yùn)算結(jié)果賦給s。

為信豐等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及信豐網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、成都網(wǎng)站制作、信豐網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

java實(shí)現(xiàn)算術(shù)表達(dá)式求值

import java.util.Collections;

import java.util.Stack;

public class Calculator {

private StackString postfixStack = new StackString();//后綴式棧

private StackCharacter opStack = new StackCharacter();//運(yùn)算符棧

private int [] operatPriority = new int[] {0,3,2,1,-1,1,0,2};//運(yùn)用運(yùn)算符ASCII碼-40做索引的運(yùn)算符優(yōu)先級

public static void main(String[] args) {

System.out.println(5+12*(3+5)/7.0);

Calculator cal = new Calculator();

String s = "5+12*(3+5)/7";

double result = cal.calculate(s);

System.out.println(result);

}

/**

* 按照給定的表達(dá)式計算

* @param expression 要計算的表達(dá)式例如:5+12*(3+5)/7

* @return

*/

public double calculate(String expression) {

StackString resultStack = new StackString();

prepare(expression);

Collections.reverse(postfixStack);//將后綴式棧反轉(zhuǎn)

String firstValue ,secondValue,currentValue;//參與計算的第一個值,第二個值和算術(shù)運(yùn)算符

while(!postfixStack.isEmpty()) {

currentValue = postfixStack.pop();

if(!isOperator(currentValue.charAt(0))) {//如果不是運(yùn)算符則存入操作數(shù)棧中

resultStack.push(currentValue);

} else {//如果是運(yùn)算符則從操作數(shù)棧中取兩個值和該數(shù)值一起參與運(yùn)算

secondValue = resultStack.pop();

firstValue = resultStack.pop();

String tempResult = calculate(firstValue, secondValue, currentValue.charAt(0));

resultStack.push(tempResult);

}

}

return Double.valueOf(resultStack.pop());

}

/**

* 數(shù)據(jù)準(zhǔn)備階段將表達(dá)式轉(zhuǎn)換成為后綴式棧

* @param expression

*/

private void prepare(String expression) {

opStack.push(',');//運(yùn)算符放入棧底元素逗號,此符號優(yōu)先級最低

char[] arr = expression.toCharArray();

int currentIndex = 0;//當(dāng)前字符的位置

int count = 0;//上次算術(shù)運(yùn)算符到本次算術(shù)運(yùn)算符的字符的長度便于或者之間的數(shù)值

char currentOp ,peekOp;//當(dāng)前操作符和棧頂操作符

for(int i=0;iarr.length;i++) {

currentOp = arr[i];

if(isOperator(currentOp)) {//如果當(dāng)前字符是運(yùn)算符

if(count 0) {

postfixStack.push(new String(arr,currentIndex,count));//取兩個運(yùn)算符之間的數(shù)字

}

peekOp = opStack.peek();

if(currentOp == ')') {//遇到反括號則將運(yùn)算符棧中的元素移除到后綴式棧中直到遇到左括號

while(opStack.peek() != '(') {

postfixStack.push(String.valueOf(opStack.pop()));

}

opStack.pop();

} else {

while(currentOp != '(' peekOp != ',' compare(currentOp,peekOp) ) {

postfixStack.push(String.valueOf(opStack.pop()));

peekOp = opStack.peek();

}

opStack.push(currentOp);

}

count = 0;

currentIndex = i+1;

} else {

count++;

}

}

if(count 1 || (count == 1 !isOperator(arr[currentIndex]))) {//最后一個字符不是括號或者其他運(yùn)算符的則加入后綴式棧中

postfixStack.push(new String(arr,currentIndex,count));

}

while(opStack.peek() != ',') {

postfixStack.push(String.valueOf( opStack.pop()));//將操作符棧中的剩余的元素添加到后綴式棧中

}

}

/**

* 判斷是否為算術(shù)符號

* @param c

* @return

*/

private boolean isOperator(char c) {

return c == '+' || c == '-' || c == '*' || c == '/' || c == '(' ||c == ')';

}

/**

* 利用ASCII碼-40做下標(biāo)去算術(shù)符號優(yōu)先級

* @param cur

* @param peek

* @return

*/

public boolean compare(char cur,char peek) {// 如果是peek優(yōu)先級高于cur,返回true,默認(rèn)都是peek優(yōu)先級要低

boolean result = false;

if(operatPriority[(peek)-40] = operatPriority[(cur) - 40]) {

result = true;

}

return result;

}

/**

* 按照給定的算術(shù)運(yùn)算符做計算

* @param firstValue

* @param secondValue

* @param currentOp

* @return

*/

private String calculate(String firstValue,String secondValue,char currentOp) {

String result = "";

switch(currentOp) {

case '+':

result = String.valueOf(ArithHelper.add(firstValue, secondValue));

break;

case '-':

result = String.valueOf(ArithHelper.sub(firstValue, secondValue));

break;

case '*':

result = String.valueOf(ArithHelper.mul(firstValue, secondValue));

break;

case '/':

result = String.valueOf(ArithHelper.div(firstValue, secondValue));

break;

}

return result;

}

}

public class ArithHelper {

// 默認(rèn)除法運(yùn)算精度

private static final int DEF_DIV_SCALE = 16;

// 這個類不能實(shí)例化

private ArithHelper() {

}

/**

* 提供精確的加法運(yùn)算。

*

* @param v1 被加數(shù)

* @param v2 加數(shù)

* @return 兩個參數(shù)的和

*/

public static double add(double v1, double v2) {

java.math.BigDecimal b1 = new java.math.BigDecimal(Double.toString(v1));

java.math.BigDecimal b2 = new java.math.BigDecimal(Double.toString(v2));

return b1.add(b2).doubleValue();

}

public static double add(String v1, String v2) {

java.math.BigDecimal b1 = new java.math.BigDecimal(v1);

java.math.BigDecimal b2 = new java.math.BigDecimal(v2);

return b1.add(b2).doubleValue();

}

/**

* 提供精確的減法運(yùn)算。

*

* @param v1 被減數(shù)

* @param v2 減數(shù)

* @return 兩個參數(shù)的差

*/

public static double sub(double v1, double v2) {

java.math.BigDecimal b1 = new java.math.BigDecimal(Double.toString(v1));

java.math.BigDecimal b2 = new java.math.BigDecimal(Double.toString(v2));

return b1.subtract(b2).doubleValue();

}

public static double sub(String v1, String v2) {

java.math.BigDecimal b1 = new java.math.BigDecimal(v1);

java.math.BigDecimal b2 = new java.math.BigDecimal(v2);

return b1.subtract(b2).doubleValue();

}

/**

* 提供精確的乘法運(yùn)算。

*

* @param v1

* 被乘數(shù)

* @param v2

* 乘數(shù)

* @return 兩個參數(shù)的積

*/

public static double mul(double v1, double v2) {

java.math.BigDecimal b1 = new java.math.BigDecimal(Double.toString(v1));

java.math.BigDecimal b2 = new java.math.BigDecimal(Double.toString(v2));

return b1.multiply(b2).doubleValue();

}

public static double mul(String v1, String v2) {

java.math.BigDecimal b1 = new java.math.BigDecimal(v1);

java.math.BigDecimal b2 = new java.math.BigDecimal(v2);

return b1.multiply(b2).doubleValue();

}

/**

* 提供(相對)精確的除法運(yùn)算,當(dāng)發(fā)生除不盡的情況時,精確到 小數(shù)點(diǎn)以后10位,以后的數(shù)字四舍五入。

*

* @param v1

* 被除數(shù)

* @param v2

* 除數(shù)

* @return 兩個參數(shù)的商

*/

public static double div(double v1, double v2) {

return div(v1, v2, DEF_DIV_SCALE);

}

public static double div(String v1, String v2) {

java.math.BigDecimal b1 = new java.math.BigDecimal(v1);

java.math.BigDecimal b2 = new java.math.BigDecimal(v2);

return b1.divide(b2, DEF_DIV_SCALE, java.math.BigDecimal.ROUND_HALF_UP).doubleValue();

}

/**

* 提供(相對)精確的除法運(yùn)算。當(dāng)發(fā)生除不盡的情況時,由scale參數(shù)指 定精度,以后的數(shù)字四舍五入。

*

* @param v1 被除數(shù)

* @param v2 除數(shù)

* @param scale 表示表示需要精確到小數(shù)點(diǎn)以后幾位。

* @return 兩個參數(shù)的商

*/

public static double div(double v1, double v2, int scale) {

if (scale 0) {

throw new IllegalArgumentException("The scale must be a positive integer or zero");

}

java.math.BigDecimal b1 = new java.math.BigDecimal(Double.toString(v1));

java.math.BigDecimal b2 = new java.math.BigDecimal(Double.toString(v2));

return b1.divide(b2, scale, java.math.BigDecimal.ROUND_HALF_UP).doubleValue();

}

/**

* 提供精確的小數(shù)位四舍五入處理。

*

* @param v 需要四舍五入的數(shù)字

* @param scale 小數(shù)點(diǎn)后保留幾位

* @return 四舍五入后的結(jié)果

*/

public static double round(double v, int scale) {

if (scale 0) {

throw new IllegalArgumentException("The scale must be a positive integer or zero");

}

java.math.BigDecimal b = new java.math.BigDecimal(Double.toString(v));

java.math.BigDecimal one = new java.math.BigDecimal("1");

return b.divide(one, scale, java.math.BigDecimal.ROUND_HALF_UP).doubleValue();

}

public static double round(String v, int scale) {

if (scale 0) {

throw new IllegalArgumentException("The scale must be a positive integer or zero");

}

java.math.BigDecimal b = new java.math.BigDecimal(v);

java.math.BigDecimal one = new java.math.BigDecimal("1");

return b.divide(one, scale, java.math.BigDecimal.ROUND_HALF_UP).doubleValue();

}

}

java表達(dá)式是什么?

Java是面向表達(dá)式的語言,Java中一個簡單表達(dá)式可以是下面任意一種:● 常量:7、false。● 單引號括起來的字符字面常量:'A'、'3'。● 雙引號括起來的字符串字面常量:"foo"、"Java"。● 任何正確聲明的變量名:myString、x。● 任何用Java二元運(yùn)算符(本章稍后將詳細(xì)討論)連接起來的兩個上述類型的表達(dá)式:x+2。● 任何用Java一元運(yùn)算符(本章稍后將詳細(xì)討論)修飾的單個上述類型的表達(dá)式:i++。● 任何用小括號括起來的上述類型的表達(dá)式:(x+2)。以及另外一些與本書后面將要學(xué)到的對象有關(guān)的表達(dá)式類型。無論多么復(fù)雜的表達(dá)式都可以由不同類型的簡單表達(dá)式和括號嵌套組合而成,例如:((((4/x) + y) * 7) + z)。2.9.1 算術(shù)運(yùn)算符 Java語言提供了許多基本的算術(shù)運(yùn)算符,如表2-1所示。表2-1 Java算術(shù)運(yùn)算符運(yùn)算符描 述+加法-減法*乘法/除法%求余(%左邊的操作數(shù)除以右邊的

操作數(shù)所得到的余數(shù),例如10%3=1)+和-運(yùn)算符也可作為一元運(yùn)算符用于表示正負(fù)數(shù):-3.7、+42。除了簡單賦值運(yùn)算符=,還有許多特定的復(fù)合賦值運(yùn)算符,這些運(yùn)算符將變量賦值和算術(shù)操作合并在一起,如表2-2所示。表2-2 Java復(fù)合賦值運(yùn)算符運(yùn)算符描 述+=a+=b等價于a=a+b-=a-=b等價于a=a-b*=a*=b等價于a=a*b/=a/=b等價于a=a/b%=a%=b等價于a=a%b最后要介紹的兩個算術(shù)運(yùn)算符是一元遞增運(yùn)算符(++)和一元遞減運(yùn)算符(--),用于將整數(shù)變量的值加1或減1,或者將浮點(diǎn)數(shù)變量的值加1.0或減1.0。稱它們?yōu)橐辉\(yùn)算符是因?yàn)樗鼈冇糜趩蝹€變量,而前面討論的二元運(yùn)算符則連接兩個表達(dá)式的值。一元遞增運(yùn)算符和一元遞減運(yùn)算符也可用于將字符變量在Unicode序列中向前或向后移動一個字符位置。例如,在下面的代碼片段中,字符變量c的值從'e'遞增為'f':遞增和遞減運(yùn)算符可以以前綴或者后綴方式使用。如果運(yùn)算符放在操作數(shù)之前(前綴模式),變量的遞增或遞減操作將在更新后的變量值被用于任何由它構(gòu)成的賦值操作之前執(zhí)行。例如,考慮下面的使用前綴遞增運(yùn)算符的代碼片段,假設(shè)a和b在程序前面已經(jīng)聲明為int變量:上述代碼執(zhí)行后,變量a的值是2,變量b的值也是2。這是因?yàn)樵诘诙兄凶兞縜的遞增(從1到2)發(fā)生在它的值賦給b之前。因此這行代碼在邏輯上等價于下面兩行代碼: 另一方面,如果運(yùn)算符放在操作數(shù)之后(后綴模式),遞增或遞減操作發(fā)生在原來的變量值被用于任何由它構(gòu)成的賦值操作之后。看一下以后綴方式使用遞增運(yùn)算符的相同代碼片段:上述代碼執(zhí)行后,變量b的值是1,而變量a的值是2。這是因?yàn)樵诘诙兄凶兞縜的遞增(從1到2)發(fā)生在它的值賦給b之后。因此這行代碼在邏輯上等價于下面兩行代碼:下面是一個稍微復(fù)雜一點(diǎn)例子,請閱讀附加的注釋以確保你能夠明白x最終是如何被賦值為10的:稍后將會看到,遞增和遞減運(yùn)算符通常和循環(huán)一起使用。2.9.2 關(guān)系和邏輯運(yùn)算符邏輯表達(dá)式以指定的方式比較兩個(簡單或者復(fù)雜)表達(dá)式exp1和exp2,決議出一個boolean值true或者false。 Java提供了表2-3所示的關(guān)系運(yùn)算符來創(chuàng)建邏輯表達(dá)式。表2-3 Java關(guān)系運(yùn)算符運(yùn)算符描 述exp1==exp2如果exp1等于exp2,值為true(注意使用雙等號測試相等性)exp1exp2如果exp1大于exp2,值為trueexp1=exp2如果exp1大于等于exp2,值為trueexp1exp2如果exp1小于exp2,值為trueexp1=exp2如果exp1小于等于exp2,值為trueexp1!=exp2如果exp1不等于exp2,值為true!exp如果exp為false值為true,如果exp為true值為false除了關(guān)系運(yùn)算符,Java還提供了用于組合/修飾邏輯表達(dá)式的邏輯運(yùn)算符。表2-4列出了最常用的邏輯運(yùn)算符。表2-4 Java邏輯運(yùn)算符運(yùn)算符描 述exp1exp2邏輯“與”,僅當(dāng)exp1和exp2都為true時復(fù)合表達(dá)式值為trueexp1||exp2邏輯“或”,exp1或exp2值為true時復(fù)合表達(dá)式值為true!exp邏輯“非”,將邏輯表達(dá)式的值從true切換到false,反之亦然下面這個例子用邏輯“與”運(yùn)算符來編程實(shí)現(xiàn)邏輯表達(dá)式“如果x大于2.0且y不等于4.0”:邏輯表達(dá)式常用于流程控制結(jié)構(gòu),本章稍后將進(jìn)行討論。2.9.3 表達(dá)式求值和運(yùn)算符優(yōu)先級如同本章前面提到的那樣,任何復(fù)雜的表達(dá)式都可以用分層嵌套的小括號構(gòu)成,例如(((8 * (y + z)) + y) x)。編譯器通常按照從內(nèi)到外,從左到右的順序?qū)@樣的表達(dá)式求值。假設(shè)x、y、z按照下面的方式聲明并初始化:下面的賦值語句右邊的表達(dá)式:將像下面這樣逐步求值:沒有小括號時,根據(jù)運(yùn)算符用于表達(dá)式求值的順序,某些運(yùn)算符具有高于其他運(yùn)算符的優(yōu)先級。例如,乘除法先于加減法執(zhí)行。通過使用小括號可以強(qiáng)制改變運(yùn)算符的優(yōu)先級,括號內(nèi)的運(yùn)算符比括號外的先執(zhí)行。考慮下面的代碼片段:代碼的第一行沒有使用括號,乘法操作比加法操作先執(zhí)行,因此整個表達(dá)式的值為2+12=14,就像我們將表達(dá)式明確地寫成2+(3*4)一樣,當(dāng)然這樣做沒有必要。 在代碼的第二行,括號被明確地放在操作2+3兩邊,因此加法操作將首先執(zhí)行,然后求和結(jié)果乘以4作為整個表達(dá)式的值,即5*4=20。回到前面的例子注意到和!=運(yùn)算符優(yōu)先級高于運(yùn)算符,因此可以去掉嵌套的括號而變成下面這樣:然而,額外的括號并不會對代碼造成傷害,事實(shí)上它可以使表達(dá)式的目的更加清楚。2.9.4 表達(dá)式類型表達(dá)式類型是表達(dá)式最終求值結(jié)果的Java類型。例如給定下面的代碼片段:表達(dá)式(x 2.0) (y != 4.0)求值結(jié)果為true,因此表達(dá)式(x 2.0) (y != 4.0)稱為boolean型表達(dá)式。在下面的代碼片段中:表達(dá)式((8 * (y + z)) + y) * x求值結(jié)果為42,因此表達(dá)式((8 * (y + z)) + y) * x稱為整型表達(dá)式。

JAVA正則表達(dá)式

這是我的blog上面的詳細(xì)介紹。配中文字符的正則表達(dá)式: [\u4e00-\u9fa5]

匹配雙字節(jié)字符(包括漢字在內(nèi)):[^\x00-\xff]

應(yīng)用:計算字符串的長度(一個雙字節(jié)字符長度計2,ASCII字符計1)

String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}

匹配空行的正則表達(dá)式:\n[\s| ]*\r

匹配HTML標(biāo)記的正則表達(dá)式:/(.*).*\/\1|(.*) \//

匹配首尾空格的正則表達(dá)式:(^\s*)|(\s*$)

應(yīng)用:javascript中沒有像vbscript那樣的trim函數(shù),我們就可以利用這個表達(dá)式來實(shí)現(xiàn),如下:

String.prototype.trim = function()

{

return this.replace(/(^\s*)|(\s*$)/g, "");

}

利用正則表達(dá)式分解和轉(zhuǎn)換IP地址:

下面是利用正則表達(dá)式匹配IP地址,并將IP地址轉(zhuǎn)換成對應(yīng)數(shù)值的Javascript程序:

function IP2V(ip)

{

re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正則表達(dá)式

if(re.test(ip))

{

return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1

}

else

{

throw new Error("Not a valid IP address!")

}

}

不過上面的程序如果不用正則表達(dá)式,而直接用split函數(shù)來分解可能更簡單,程序如下:

var ip="10.100.20.168"

ip=ip.split(".")

alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))

匹配Email地址的正則表達(dá)式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匹配網(wǎng)址URL的正則表達(dá)式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%=]*)?

利用正則表達(dá)式去除字串中重復(fù)的字符的算法程序:[注:此程序不正確,原因見本貼回復(fù)]

var s="abacabefgeeii"

var s1=s.replace(/(.).*\1/g,"$1")

var re=new RegExp("["+s1+"]","g")

var s2=s.replace(re,"")

alert(s1+s2) //結(jié)果為:abcefgi

我原來在CSDN上發(fā)貼尋求一個表達(dá)式來實(shí)現(xiàn)去除重復(fù)字符的方法,最終沒有找到,這是我能想到的最簡單的實(shí)現(xiàn)方法。思路是使用后向引用取出包括重復(fù)的字符,再以重復(fù)的字符建立第二個表達(dá)式,取到不重復(fù)的字符,兩者串連。這個方法對于字符順序有要求的字符串可能不適用。

得用正則表達(dá)式從URL地址中提取文件名的javascript程序,如下結(jié)果為page1

s=" "

s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")

alert(s)

利用正則表達(dá)式限制網(wǎng)頁表單里的文本框輸入內(nèi)容:

用正則表達(dá)式限制只能輸入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"

用正則表達(dá)式限制只能輸入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"

用正則表達(dá)式限制只能輸入數(shù)字:onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"

用正則表達(dá)式限制只能輸入數(shù)字和英文:onkeyup="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" 出處:藍(lán)色理想

前一段時間寫了2段EmEditor的宏,用來統(tǒng)計代碼行數(shù)和簡單的規(guī)約檢查,稍微整理一下,

下面是從EmEditor的QA的提取的實(shí)例:雙引號包含的字符串

strings surrounded by double-quotation marks

“.*?” [ ]包含的字符串

strings surrounded by [ ]

\[[^\[]*?\] 變量名

variable names

[a-zA-Z_][a-zA-Z_0-9]* IP 地址

IP addresses

([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3}) 網(wǎng)頁地址

URL

(\S+)://([^:/]+)(:(\d+))?(/[^#\s]*)(#(\S+))? 各行Tab以后的文字列

lines followed by a tab

\t.*$ 平仮名 ひらがな

Hiragana

[\x{3041}-\x{309e}] 全角片仮名 全角カタカナ

Full-width Katakana

[\x{309b}-\x{309c}\x{30a1}-\x{30fe}] 半角仮名 半角カナ

Half-width Kana

[\x{ff61}-\x{ff9f}] 中日韓 漢字

CJK ideographs

[\x{3400}-\x{9fff}\x{f900}-\x{fa2d}] 中日韓 漢字符號

CJK ideograph marks

[\x{3000}-\x{3037}] 韓國字符

Hangul

[\x{1100}-\x{11f9}\x{3131}-\x{318e}\x{ac00}-\x{d7a3}] 行頭插入 //

Insert // at start of lines

Find: ^

Replace with: // 刪除行頭 //

Remove // at end of lines

Find: ^//

Replace: 刪除行后的空白文字(包含空格和制表位 Space+Tab)

Remove trailing whitespaces

Find: \s+?$

Replace with: 將(abc)替換為[abc]

Replace (abc) with [abc]

Find: \((.*?)\)

Replace: \[\1\] 將H3 …替換為H4 …

Replace H3 … with H4 …

Find: H3(.*?)

Replace: H4\1 將9/13/2003替換為2003年9月13日

Replace 9/13/2003 with 2003.9.13

Find: ([0-9]{1,2})/([0-9]{1,2})/([0-9]{2,4})

Replace: \3年\1月\2日 將字母a-z替換為大寫字母

Uppercase characters from a to z

Find: [a-z]

Replace: \U\0 首字母大寫

Capitalize all words

Find: ([a-zA-Z])([a-zA-Z]*)

Replace: \U\1\L\2

JAVA正則表達(dá)式代碼

\S{6,18}

以下是常用的正則表達(dá)式希望能幫到你。

size=12px]1。^\d+$//匹配非負(fù)整數(shù)(正整數(shù) + 0)

2。^[0-9]*[1-9][0-9]*$//匹配正整數(shù)

3。^((-\d+)|(0+))$//匹配非正整數(shù)(負(fù)整數(shù) + 0)

4。^-[0-9]*[1-9][0-9]*$//匹配負(fù)整數(shù)

5。^-?\d+$//匹配整數(shù)

6。^\d+(\.\d+)?$//匹配非負(fù)浮點(diǎn)數(shù)(正浮點(diǎn)數(shù) + 0)

7。^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$//匹配正浮點(diǎn)數(shù)

8。^((-\d+(\.\d+)?)|(0+(\.0+)?))$//匹配非正浮點(diǎn)數(shù)(負(fù)浮點(diǎn)數(shù) + 0)

9。^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$//匹配負(fù)浮點(diǎn)數(shù)

10。^(-?\d+)(\.\d+)?$//匹配浮點(diǎn)數(shù)

11。^[A-Za-z]+$//匹配由26個英文字母組成的字符串

12。^[A-Z]+$//匹配由26個英文字母的大寫組成的字符串

13。^[a-z]+$//匹配由26個英文字母的小寫組成的字符串

14。^[A-Za-z0-9]+$//匹配由數(shù)字和26個英文字母組成的字符串

15。^\w+$//匹配由數(shù)字、26個英文字母或者下劃線組成的字符串

16。^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$//匹配email地址

17。^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$//匹配url

18。匹配中文字符的正則表達(dá)式: [\u4e00-\u9fa5]

19。匹配雙字節(jié)字符(包括漢字在內(nèi)):[^\x00-\xff]

20。應(yīng)用:計算字符串的長度(一個雙字節(jié)字符長度計2,ASCII字符計1)

String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}

21。匹配空行的正則表達(dá)式:\n[\s| ]*\r

22。匹配HTML標(biāo)記的正則表達(dá)式:/(.*).*\/\1|(.*) \//

23。匹配首尾空格的正則表達(dá)式:(^\s*)|(\s*$)

請問JAVA中正則表達(dá)式匹配怎么實(shí)現(xiàn)的!

Java中正則表達(dá)式匹配的語法規(guī)則:

以下是整理出來的Java下運(yùn)用正則表達(dá)式實(shí)現(xiàn)匹配的程序案例,代碼如下:

package?org.luosijin.test;

import?java.util.regex.Matcher;

import?java.util.regex.Pattern;

/**

*?正則表達(dá)式

*?@version?V5.0

*?@author?Admin

*?@date???2015-7-25

*/

public?class?Regex?{

/**

*?@param?args

*?@author?Admin

*?@date?2015-7-25

*/

public?static?void?main(String[]?args)?{

Pattern?pattern?=?Pattern.compile("b*g");

Matcher?matcher?=?pattern.matcher("bbg");

System.out.println(matcher.matches());

System.out.println(pattern.matches("b*g","bbg"));

//驗(yàn)證郵政編碼

System.out.println(pattern.matches("[0-9]{6}",?"200038"));

System.out.println(pattern.matches("http://d{6}",?"200038"));

//驗(yàn)證電話號碼

System.out.println(pattern.matches("[0-9]{3,4}//-?[0-9]+",?"02178989799"));

getDate("Nov?10,2009");

charReplace();

//驗(yàn)證身份證:判斷一個字符串是不是身份證號碼,即是否是15或18位數(shù)字。

System.out.println(pattern.matches("^//d{15}|//d{18}$",?"123456789009876"));

getString("D:/dir1/test.txt");

getChinese("welcome?to?china,江西奉新,welcome,你!");

validateEmail("luosijin123@163.com");

}

/**

*?日期提取:提取出月份來

*?@param?str

*?@author?Admin

*?@date?2015-7-25

*/

public?static?void?getDate(String?str){

String?regEx="([a-zA-Z]+)|//s+[0-9]{1,2},//s*[0-9]{4}";

Pattern?pattern?=?Pattern.compile(regEx);

Matcher?matcher?=?pattern.matcher(str);

if(!matcher.find()){

System.out.println("日期格式錯誤!");

return;

}

System.out.println(matcher.group(1));????//分組的索引值是從1開始的,所以取第一個分組的方法是m.group(1)而不是m.group(0)。

}

/**

*?字符替換:本實(shí)例為將一個字符串中所有包含一個或多個連續(xù)的“a”的地方都替換成“A”。

*?

*?@author?Admin

*?@date?2015-7-25

*/

public?static?void?charReplace(){

String?regex?=?"a+";

Pattern?pattern?=?Pattern.compile(regex);

Matcher?matcher?=?pattern.matcher("okaaaa?LetmeAseeaaa?aa?booa");

String?s?=?matcher.replaceAll("A");

System.out.println(s);

}

/**

*?字符串提取

*?@param?str

*?@author?Admin

*?@date?2015-7-25

*/

public?static?void?getString(String?str){

String?regex?=?".+/(.+)$";

Pattern?pattern?=?Pattern.compile(regex);

Matcher?matcher?=?pattern.matcher(str);

if(!matcher.find()){

System.out.println("文件路徑格式不正確!");

return;

}

System.out.println(matcher.group(1));

}

/**

*?中文提取

*?@param?str

*?@author?Admin

*?@date?2015-7-25

*/

public?static?void?getChinese(String?str){

String?regex?=?"[//u4E00-//u9FFF]+";//[//u4E00-//u9FFF]為漢字?

Pattern?pattern?=?Pattern.compile(regex);

Matcher?matcher?=?pattern.matcher(str);

StringBuffer?sb?=?new?StringBuffer();

while(matcher.find()){

sb.append(matcher.group());

}

System.out.println(sb);

}

/**

*?驗(yàn)證Email

*?@param?email

*?@author?Admin

*?@date?2015-7-25

*/

public?static?void?validateEmail(String?email){

String?regex?=?"[0-9a-zA-Z]+@[0-9a-zA-Z]+//.[0-9a-zA-Z]+";

Pattern?pattern?=?Pattern.compile(regex);

Matcher?matcher?=?pattern.matcher(email);

if(matcher.matches()){

System.out.println("這是合法的Email");

}else{

System.out.println("這是非法的Email");

}

}

}

本文標(biāo)題:java代碼實(shí)現(xiàn)s表達(dá)式,java中%s
URL地址:http://chinadenli.net/article22/dsgshjc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊網(wǎng)站收錄建站公司手機(jī)網(wǎng)站建設(shè)電子商務(wù)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)