当前位置: 代码迷 >> J2SE >> 求大神帮忙用java写一个函数,解析一段字符串,多谢
  详细解决方案

求大神帮忙用java写一个函数,解析一段字符串,多谢

热度:16   发布时间:2016-04-23 20:43:08.0
求大神帮忙用java写一个函数,解析一段字符串,谢谢!
字符串格式:
var hq_str_sz000001="平安银行,11.20,11.24,11.33,11.38,11.08,11.32,11.33,26316829,297218362.63,375042,11.32,274513,11.31,394900,11.30,302500,11.29,62200,11.28,334526,11.33,263977,11.34,311051,11.35,155089,11.36,256850,11.37,2014-05-21,15:05:38,00";

各条内容使用逗号隔开的,要求用一个函数实现,读入的就是这个字符串str,解析完后得到一个str[]数组,并以这种格式输出:

股票代号:sz000001
股票名称:平安银行
今日开盘价:11.20
昨日收盘价:11.24
当前价格:11.33
今日最高价:11.38
今日最低价:11.08
竞买价:11.32
竞卖价:11.33
成交的股票数:26316829
成交金额:297218362.63
买一 (元)/手:375042
买一 (元)/手:11.32
买二 (元)/手:274513
买二(元)/手:11.31
买三 (元)/手:394900
买三 (元)/手:11.30
买四 (元)/手:302500
买四 (元)/手:11.29
买五 (元)/手:62200
买五 (元)/手:11.28
卖一 (元)/手:334526
卖一 (元)/手:11.33
卖二 (元)/手:263977
卖二 (元)/手:11.34
卖三 (元)/手:311051
卖三 (元)/手:11.35
卖四 (元)/手:155089
卖四 (元)/手:11.36
卖五 (元)/手:256850
卖五 (元)/手:11.37
日期:2014-05-21
时间:15:05:38

我知道有split这个函数,但是具体怎么得到结果不太会,希望大神们帮帮忙,谢谢!

另外,字符串包括等号左边的那部分的,上边是一整个需要解析的字符串
------解决方案--------------------
直接
String[] ss = hq_str_sz000001.split(",");
然后给每个元素前面加上相应的字符串就行
比如ss[0] = "股票名称:"+ss[0];
------解决方案--------------------
按逗号分隔成数组呗
然后遍历数组,把开头加上!
你这是JS的吧,确定要用java做?

------解决方案--------------------
貌似是新浪还是搜狐的股票api
------解决方案--------------------
是js 还是后台的啊。

都可以 自己拼。
------解决方案--------------------
代码如下:
package test;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class test {

public static void main(String args[])
{
List<String> list = new ArrayList<String>();
String str = "var hq_str_sz000001=\"平安银行,11.20,11.24,11.33,11.38,11.08,11.32,11.33,26316829,297218362.63,375042,11.32,274513,11.31,394900,11.30,302500,11.29,62200,11.28,334526,11.33,263977,11.34,311051,11.35,155089,11.36,256850,11.37,2014-05-21,15:05:38,00\";";
String[] temp = str.split(",");
Pattern pattern = Pattern.compile(".*_([a-z]{2}\\d{6})=\"(.*)$");
Matcher matcher = pattern.matcher(temp[0]);
if(matcher.find())
{
list.add(matcher.group(1));
list.add(matcher.group(2));
}
for(int i=2; i<temp.length; i++)
list.add(temp[i]);
for(int j=0; j<list.size()-1; j++)
System.out.println(list.get(j));
}
}


输出:(那些名称请自行补充)
sz000001
平安银行
11.24
11.33
11.38
11.08
11.32
11.33
26316829
297218362.63
375042
11.32
274513
11.31
394900
11.30
302500
11.29
62200
11.28
334526
11.33
263977
11.34
311051
11.35
155089
11.36
256850
11.37
2014-05-21
15:05:38

------解决方案--------------------
给你个方法来截取字符串
package test;

public class Test {

    public static String intercept(String str, String begin, String end, String splitStr) {
        String result = "";
        int i;
        int j = 0;
        do {
            i = str.indexOf(str, j);
            if (i == -1) {
                break;
            }
            i += begin.length();
            j = str.indexOf(end);
            if (j == -1) {
                break;
            }
            if (j > 0) {
                if (result.length() > 0) {
                    result += str.substring(i, j);
                } else {
                    result = splitStr + str.substring(i, j);
                }
            }
  相关解决方案