String = " ;;;;;;asdfasdf;;sdfs;;;fasdfa;;;;;"
怎样把前面和后面的分号去掉并且把中间的多个分号变成一个分号?分号的数目不定。

解决方案 »

  1.   

    String str = " ;;;;;;asdfasdf;;sdfs;;;fasdfa;;;;;";
    String[] sp = str.split(";");
    str = "";
    for(int i = 0; i < sp.length; i++){
    if(!sp[i].equals("")){
    str += "?" + sp[i];
    }
    System.out.println("" + sp[i]);
    }
    System.out.println("" + str);
      

  2.   

    归纳成工具方法:

        public static String convertStr(String str, String splitStr, String split2){
    String[] sp = str.split(splitStr);
    str = "";
    for(int i = 0; i < sp.length; i++){
    if(!sp[i].equals("")){
    str += split2 + sp[i];
    }
    }
    return str;
        }
        
    public static void main(String[] args){
    String str = " ;;;;;;asdfasdf;;sdfs;;;fasdfa;;;;;";
    System.out.println(convertStr(str, ";", "?"));
             }
      

  3.   

    恩,再用StringBuffer来做就更好了。
      

  4.   

    TO: rower203(华仔) 你测试过吗?
      

  5.   

    String str = " ;;;;;;asdfasdf;;sdfs;;;fasdfa;;;;;";

    str = str.replaceAll(";+", "\\?");
        
    System.out.println(str); 再把前后的"?"去掉就可以了
      

  6.   

    跑过多次。结果:? ?asdfasdf?sdfs?fasdfa
      

  7.   

    楼主想要的应该是:"asdfasdf?sdfs?fasdfa"  吧
      

  8.   

    是把中间的多个分号替换成一个问号还是替换成一个分号呢?
    我现在是替换成一个分号:
    public class StringTest
    {
    public static void main(String[] args)
    {
    String str = " ;;;;;;asdfasdf;;sdfs;;;fasdfa;;;;;";
    str = str.trim();
    str = Trim(str, ';'); char lastChar = '\0';
    char ch;
    String strs = "";
    for(int i = 0; i < str.length(); i++)
    {
    ch = str.charAt(i);
    if(ch != ';' || ch != lastChar)
    {
    strs += ch;
    }
    lastChar = ch;
    }
    System.out.println(strs);
    } public static String TrimStart(String str, char ch)
    {
    int index = 0;
    int len  = str.length();
    char c;
    for(int i = 0; i < len; i++)
    {
    c = str.charAt(i);
    if(c != ch)
    {
    break;
    }
    index++;
    }
    if(index != 0)
    {
    return str.substring(index, len - 1);
    }
    return str;
    } public static String TrimEnd(String str, char ch)
    {
    int len = str.length();
    int index = len - 1;
    char c;
    for(; index >= 0; index--)
    {
    c = str.charAt(index);
    if(c != ch)
    {
    break;
    }
    }
    if(index != len - 1)
    {
    return str.substring(0, index + 1);
    }
    return str;
    } public static String Trim(String str, char ch)
    {
    str = TrimStart(str, ch);
    return TrimEnd(str, ch);
    }
    }
      

  9.   

    String  old = " ;;;;;;asdfasdf;;sdfs;;;fasdfa;;;;;"
    怎样把前面和后面的分号去掉并且把中间的多个分号变成一个分号?分号的数目不定。------------------------------
    String s = " ;;;;;;asdfasdf;;sdfs;;;fasdfa;;;;;";
    s = s.replaceAll("^\\s*;+","").replaceAll(";+", "?"); System.out.println(s);