导航:首页 > 源码编译 > 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解析字符串区间算法相关的资料

热点内容
文件夹能直接刻录吗 浏览:493
androidxmpp删除好友 浏览:969
javac哪个前景好 浏览:426
中华英才网app为什么不能搜索了 浏览:660
服务器域名是什么意思 浏览:52
Linux导出mysql命令 浏览:159
无诈建邺是什么app 浏览:228
python中的双色球 浏览:166
python解释器里如何换行 浏览:410
python编写格式 浏览:574
用python做出来的软件 浏览:469
服务器指示灯代表什么 浏览:702
做一个单片机销售需要知识 浏览:777
怎样去连接加密wifi 浏览:682
有什么app自带拍摄模板的 浏览:435
登录相亲网为什么要下载app呢 浏览:545
加密货币和主权货币撮合 浏览:683
哪里能学app 浏览:445
spline怎么看源码 浏览:18
桂妃app哪里下载 浏览:236