導航:首頁 > 源碼編譯 > java解析字元串區間演算法

java解析字元串區間演算法

發布時間:2022-09-14 16:26:05

java字元串解析 String ss="y:1" 通過Y來獲得1

string[]
ss
表示ss是一個字元串數組;
string
ss[]表示ss是一個字元串,後面跟[]表示索引,例如ss[0]就表示字元串的第一個字元;

⑵ 用java解析字元串,如字元串"(1+2/5)*3"當成是數值表達式,進行計算出結果來。

如果你懂Pascal語言,可以到http://user.qzone.qq.com/413405663/blog/1259328420看看

import java.io.*;
import java.util.*;
class BinaryTree{
BinaryTree left=null;
BinaryTree right=null;
char data=0;
}
public class Calculator{
String porder="";
public void postorder(BinaryTree bt){
//遞歸後序遍歷二叉樹
if(bt!=null){
postorder(bt.left);
postorder(bt.right);
porder+=bt.data;
}
}
public int calc(String s){
//計算後綴表達式的值
int i=0,len=0,a=0,b=0;
Stack stack=new Stack();
len=s.length();
for(;i<len;i++){
char c=s.charAt(i);
switch(c){
case '+':
a=(int)stack.pop();
b=(int)stack.pop();
stack.push(a+b);
break;
case '-':
b=(int)stack.pop();
a=(int)stack.pop();
stack.push(a-b);
break;
case '*':
a=(int)stack.pop();
b=(int)stack.pop();
stack.push(a*b);
break;
case '/':
b=(int)stack.pop();
a=(int)stack.pop();
stack.push((int)a/b);
break;
default:
//該字元是數字
stack.push(c-'0');
}
}
return stack.pop();
}
public BinaryTree create(String s){
//構造二叉樹結點(遞歸)
int i=0,pos=0,len=0;
String l="",r="";
BinaryTree node=new BinaryTree();
len=s.length();
if(len==0) return null;
if(len==1){
//遞歸邊界
node.data=s.charAt(0);
return node;
}
//去括弧
while((pos=s.indexOf(")"))!=-1){
i=pos;
while((s.charAt(i)!='(')&&(i>0)) i--;
String sub=s.substring(i+1,pos);//括弧中的表達式
porder="";
postorder(create(sub));//得到後綴表達式
int sum=calc(porder);//計算後綴表達式的值,替換原來括弧中的表達式
s=s.substring(0,i)+String.valueOf(sum)+s.substring(pos+1);
len=s.length();//重新計算s的長度
}
//從後往前掃描得到的第一個優先順序最低的運算符號的位置
pos=-1;
for(i=len-1;i>0;i--){
char c=s.charAt(i);
if((c=='+')||(c=='-')){
pos=i;
break;
}
else if(((c=='*')||(c=='/'))&&(pos==-1)) pos=i;
}
//在pos位置將s分為左右兩部分,遞歸構造左右兩個部分的二叉樹
l=s.substring(0,pos);
r=s.substring(pos+1);
node.data=s.charAt(pos);
node.left=create(l);
node.right=create(r);
return node;
}
public static void main(String args[]) throws Exception{
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
String s=reader.readLine();
Calculator c=new Calculator();
BinaryTree bt=c.create(s);
c.postorder(bt);
System.out.println(c.calc(c.porder));
}
}

⑶ Java 字元串處理,解析,拆解,分解

public class StringSplit {


public static void main(String[] args){

String mString = "name='zhangshan' and (age >= 20 or age < 10) and userName <> 'day and night' and id in (1,2,3,4,5)";

String mString2 = mString.split("and")[0];

String mString3 = mString.split("and")[1];

String mString4 = mString.split("and")[2];

String mString5 = mString.split("and")[3];

String mString6 = mString.split("and")[4];

String mString7 = mString3.split("\(")[1];

String mString8 = mString7.replace(")", "");

String mString9 = mString8.split("or")[0];

String mString10 = mString8.split("or")[1];

System.out.println(mString2);

System.out.println(mString9);

System.out.println(mString10);

System.out.println(mString4+" and "+mString5);

System.out.println(mString6);

}

}



不知道這樣是否符合你的要求,望採納

⑷ java 字元串統計分組演算法求教

public static void main(String[] args) {
String str = "02 07 13 20 25 27 12 15 16 26 29 31 04 17 23 27 28 32 04 08 16 24 30 32 01 04 05 18 19 25";
String[] strs = str.split(" ");
List<Integer> intList = new ArrayList<Integer>();
for(String s : strs) {
intList.add(Integer.parseInt(s));
}
Collections.sort(intList);
System.out.println("排序後的字元:" + intList );

Map<Integer, List<Integer>> find = new LinkedHashMap<Integer, List<Integer>>();
int max = intList.get(intList.size()-1); //定義要查找的區間
int min = 1;
while(min <= max) {
int count = 0;
for(int i : intList) {
if(min == i) {
count++; //發現次數
}
}
List<Integer> group = find.get(count);
if(group == null)
group = new ArrayList<Integer>();
group.add(min);
find.put(count, group);
min++;
}
for(int count : find.keySet()) {
System.out.println("出現"+count+"次的字元:" + find.get(count));
}
}

沒有注重性能,只是簡單的實現功能,提供參考

⑸ java解析字元串

首先截取字元串,ITE-RouteMoni RouterAdd:的長度是一定的,把它可以先截取出來。然後剩下的部分用Stringd的split方法,以空格為間隔符分割解析成數組。然後分別讀取數組中的每個元素。比如 routerid(xxxx),先讀取(之前的內容,然後將這部分去除,然後讀取剩餘字元串將最後一個)去除,就得到了四要的信息

⑹ Java解析字元串

importnet.sf.json.JSONArray;importnet.sf.json.JSONObject;publicclassTest{ publicstaticvoidmain(String[]args)throwsException{ Stringstr="{"id":["fdsfadf","hgfhhgjghj","gfhfghfghgf"]}"; JSONObjectjb=JSONObject.fromObject(str); JSONArrayja=jb.getJSONArray("id"); for(inti=0;i

⑺ java解析規律字元串

用split("}") 先將這個string變成{01:9566 {02:W84394
然後用String里的方法,忽略第一個字元「{」 拿到後面的字元串
最後再用split拆一次
這樣就可以搞定

⑻ java 拼接字元和解析字元串

importjava.util.ArrayList;
importjava.util.List;

/**
*CreatedbyAdministratoron2015/6/14.
*/
publicclassTest{
privatestaticList<String>infor;

static{
infor=newArrayList<String>();
infor.add("流水號1");
infor.add("收款方帳號1");
infor.add("真實姓名");
infor.add("付款金額1");
infor.add("備注說明1");
infor.add("流水號2");
infor.add("收款方帳號2");
infor.add("真實姓名");
infor.add("付款金額2");
infor.add("備注說明2");
}

publicstaticvoidmain(Stringargs[]){
/**
*開始拼接字元串
*/
StringinforString=infor.get(0);
for(inti=1,k=infor.size();i<k;i++){
if(i%5==0){
inforString+="|";
}else{
inforString+="^";
}
inforString+=infor.get(i);
}
System.out.println("拼接後的字元串是:"+inforString);


/**
*開始解釋字元串
*/
String[]usersInfor=inforString.split("\|");
System.out.println(usersInfor.length);

Useruser;
String[]userString;
for(inti=0,k=usersInfor.length;i<k;i++){
userString=usersInfor[i].split("\^");
user=newUser();
user.setId(userString[0]);
user.setGathering(userString[1]);
user.setName(userString[2]);
user.setPayment(userString[3]);
user.setRemark(userString[4]);
System.out.println("User"+i+"="+user);
}


}


staticclassUser{
privateStringid;
privateStringgathering;
privateStringname;
privateStringpayment;
privateStringremark;

publicUser(){

}

publicStringgetId(){
returnid;
}

publicvoidsetId(Stringid){
this.id=id;
}

publicStringgetGathering(){
returngathering;
}

publicvoidsetGathering(Stringgathering){
this.gathering=gathering;
}

publicStringgetName(){
returnname;
}

publicvoidsetName(Stringname){
this.name=name;
}

publicStringgetPayment(){
returnpayment;
}

publicvoidsetPayment(Stringpayment){
this.payment=payment;
}

publicStringgetRemark(){
returnremark;
}

publicvoidsetRemark(Stringremark){
this.remark=remark;
}

@Override
publicStringtoString(){
return"[id:"+id+",gathering:"+gathering+",name:"+name+",payment:"+payment+",remark:"+remark+"]";
}
}
}

⑼ JAVA中如何解析字元串公式,並且利用公式進行計算

可以使用 commons-jexl3 jar包
示例:
public static void main(String[] args){
String expressionString = "1+2+3";

JexlEngine jexlEngine = new JexlBuilder().create();
JexlExpression jexlExpression = jexlEngine.createExpression(expressionString);
Object evaluate = jexlExpression.evaluate(null);
System.out.println(evaluate);
}
結果: 6
示例2:
來個復雜點的
public static void main(String[] args){
// String expressionString = "1+2+3";

String expressionString = "100*10-(200+300)";

JexlEngine jexlEngine = new JexlBuilder().create();
JexlExpression jexlExpression = jexlEngine.createExpression(expressionString);
Object evaluate = jexlExpression.evaluate(null);
System.out.println(evaluate);
}
結果: 500

閱讀全文

與java解析字元串區間演算法相關的資料

熱點內容
java程序員面試題庫 瀏覽:571
如何在公司內網自建雲伺服器 瀏覽:430
python元列表 瀏覽:537
手機里文件夾圖片怎麼恢復 瀏覽:52
把qq設置成命令行啟動 瀏覽:685
圖斯的命令 瀏覽:636
往返app是什麼 瀏覽:679
計算錢的演算法 瀏覽:493
war壓縮軟體 瀏覽:58
3dpdfreader 瀏覽:775
伺服器接收單片機數據 瀏覽:464
如何連接虛擬主機運行命令代碼 瀏覽:546
壓縮打包機進料腔 瀏覽:754
安卓手機設置鬧鍾為什麼不響 瀏覽:511
湖南伺服器負載均衡是什麼 瀏覽:291
java進程鎖 瀏覽:925
股票ppo指標源碼 瀏覽:945
解壓神器小游戲指尖陀螺 瀏覽:275
免解壓看漫畫iOS 瀏覽:303
樣條線快捷命令 瀏覽:53