日期:2014-05-20  浏览次数:20751 次

========================帮忙截个字符串====================

上面的图片是一个字符串,“-”代表空格,我想把图中的字符串切了,每个红框代表一个字符串,共切成5个。要怎么实现?
可否有正则表达式的话最好。

------解决方案--------------------
这个条件给的太模糊了!
怎么样才算一个字符串?弄清楚这个条件先。
你的示例中给出的  相隔两个空格可以算同一个字符串(例如WHITE--FRAGRANT)
也可以算不同的字符串(例如10.78870--10.75000)
这个就很明显不能简单的通过正则来匹配了!
------解决方案--------------------
若 所有数据 都是 这样的数据   也是可以切的   切完再合

如果数据结构不都这样   我就没招了
------解决方案--------------------

import java.util.*;
public class SplitString1{
    public static void main(String[] args){
        String s = "GOLDEN WHEEL        100% THAT WHITE  FRAGRANT RICE  430 BAGS"
                   +"        10.78870  16.75000";
        List<String> result = splitString1(s);
        for(String str:result){
            System.out.println(str);
        }
    }
    //根据数字出现的位置判断
    //
    public static List<String> splitString1(String s){
        List<String> list = new ArrayList<String>();
        int begin = 0;
        for(int i=0;i<s.length();i++){
            int ic = (int)s.charAt(i);;
            //数字,且不是第一个,并前面一个是空格,这就是要截取的子串的末尾。
            //
            if((ic>=48 && ic<=57) && (i!=0) && (s.charAt(i-1)==' ')){
                list.add(s.substring( begin , i-1).trim());
                begin = i;
            }
        }
        list.add(s.substring(begin , s.length()-1 ).trim());//最后那一个子串
        return list;
    }
}
/* result
GOLDEN WHEEL
100% THAT WHITE  FRAGRANT RICE
430 BAGS
10.78870
16.7500
*/

------解决方案--------------------
先将多个空格用一个空格代替,然后在用字符串分割法,注意导入import java.util.regex.*;
public static void main(String args[]){
String arr = "DEL   SEF   DEQ QQQ GGG    FFF";
String   regEx="['   ']+";   //一个或多个空格