⑴ 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 ⑻ java 拼接字符和解析字符串
然后用String里的方法,忽略第一个字符“{” 拿到后面的字符串
最后再用split拆一次
这样就可以搞定
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