用頓號(hào)將若干個(gè)字符串分隔開

          錯(cuò)誤做法:

           String[] words
          = { " a " , " b " , " c " } ;
           String word
          = "" ;

           
          for ( int  i = 0 ;i < words.length;i ++ )
           
          {
               word
          += words[i]+ " " ;
           }


           正確做法:

           String[] words
          = { " a " , " b " , " c " } ;
           String word
          = "" ;

           
          for ( int  i = 0 ;i < words.length;i ++ )
           
          {
               
          if  ( ! word.equals( "" )) 
               word
          += " " ;
               word
          += words[i];
           }




          posted on 2007-02-27 08:20 我為J狂 閱讀(2739) 評(píng)論(15)  編輯  收藏 所屬分類: Java算法

          評(píng)論

          # re: 用頓號(hào)將若干個(gè)字符串分隔開 2007-02-27 08:33 easyrun

          if ( ! word.equals( "" ))
          最好改為!"".equals(word)
          因?yàn)槿绻鹷ord在前的話很容易引起nullPoint異常  回復(fù)  更多評(píng)論   

          # re: 用頓號(hào)將若干個(gè)字符串分隔開 2007-02-27 08:44 我為J狂

          真是金玉良言,我會(huì)在以后的開發(fā)過程中加以改進(jìn)的。  回復(fù)  更多評(píng)論   

          # re: 用頓號(hào)將若干個(gè)字符串分隔開 2007-02-27 09:33 永恒之光

          其實(shí)要認(rèn)省點(diǎn)代碼。這樣就不用比較NULL了。
          for ( int i = 0 ;i < words.length-1;i ++ )  回復(fù)  更多評(píng)論   

          # re: 用頓號(hào)將若干個(gè)字符串分隔開 2007-02-27 09:37 Lingo

          別在循環(huán)里用+號(hào)哦  回復(fù)  更多評(píng)論   

          # re: 用頓號(hào)將若干個(gè)字符串分隔開 2007-02-27 10:02 我為J狂

          “永恒之光”的方法真妙!以上的程序改為:
          String[] words = { " a " , " b " , " c " } ;
          String word = "" ;
          int i=0;
          for ( i = 0 ;i < words.length-1;i ++ )
          {
          word+=words[i]+" 、 ";
          }
          word +=words[i];
          不但節(jié)省了代碼,而且不用比較NULL了。

          對于 Lingo提出的問題“別在循環(huán)里用+號(hào)”,我不知道其中的原因,請Lingo解釋一下,謝謝。  回復(fù)  更多評(píng)論   

          # re: 用頓號(hào)將若干個(gè)字符串分隔開 2007-02-27 10:56 hcom

          不用+ 的話,就不要用String了,只好用StringBuffer咯

            回復(fù)  更多評(píng)論   

          # re: 用頓號(hào)將若干個(gè)字符串分隔開 2007-02-27 11:12 我為J狂

          是不是將程序改成這樣?
          String[] words = { " a " , " b " , " c " } ;
          StringBuffer word =new StringBuffer("");
          int i=0;
          for ( i = 0 ;i < words.length-1;i ++ )
          {
          word=word.append(new StringBuffer(words[i]).append(" 、 "));
          }
          word=word.append(words[i]);
          如果這樣寫,代碼的可讀性降低,很不好理解。
          我想Lingo提出“別在循環(huán)里用+號(hào)”另有涵義。  回復(fù)  更多評(píng)論   

          # re: 用頓號(hào)將若干個(gè)字符串分隔開 2007-02-27 12:00 hcom

          String[] words = { " a ", " b ", " c " };
          StringBuffer word = new StringBuffer("");
          int i = 0;
          for (i = 0; i < words.length - 1; i++) {
          word.append(words[i]).append("、");
          }
          word.append(words[i]);


          這樣不可以嗎??  回復(fù)  更多評(píng)論   

          # re: 用頓號(hào)將若干個(gè)字符串分隔開 2007-02-27 12:27 我為J狂

          呵呵,是我將程序?qū)憦?fù)雜了,見笑了。  回復(fù)  更多評(píng)論   

          # re: 用頓號(hào)將若干個(gè)字符串分隔開 2007-03-05 23:09 dreamstone

          @我為J狂
          Equals的時(shí)候盡量用"內(nèi)容"開頭,這樣不用判斷空

          正如Lingo說的不要在循環(huán)中使用字符串的+,因?yàn)樽址欠强勺兊膶ο螅褂?基本上等于new StringBuffer() apend() apend() toString。比直接使用StringBuffer多了一次new,如果寫在循環(huán)中會(huì)很大程度降低效率。

          如果是Jdk1.5可以在StringBuilder和StringBuffer之間選擇一下,原因可以看看這里http://www.aygfsteel.com/dreamstone/archive/2006/10/17/75608.html  回復(fù)  更多評(píng)論   

          # re: 用頓號(hào)將若干個(gè)字符串分隔開 2007-03-05 23:13 dreamstone

          @我為J狂
          int i = 0;
          for (i = 0; i < words.length - 1; i++) {
          word.append(words[i]).append("、");
          }
          這種寫法不太好,呵呵。因?yàn)槿菀追笍?fù)制粘鐵錯(cuò)誤,如出現(xiàn)
          等同于for 循環(huán)的迭代好于while循環(huán)
          這樣比較好點(diǎn)。
          for (int i = 0; i < words.length - 1; i++) {
          word.append(words[i]).append("、");
          }
            回復(fù)  更多評(píng)論   

          # re: 用頓號(hào)將若干個(gè)字符串分隔開 2007-03-05 23:17 dreamstone

          另外關(guān)于分割的情況,如果使用、分割有的時(shí)候會(huì)有些限制,比如用戶恰好輸入了、,這個(gè)時(shí)候需要轉(zhuǎn)義,是挺麻煩的事情,有個(gè)解決方案是這樣,可以使用用戶不可能輸入的字符來分割,例如(char)1 看上去就是個(gè)亂碼,呵呵

          你的表真有意思,剛才正好23:00,一頓響,嚇了我一跳一以為中病毒了。  回復(fù)  更多評(píng)論   

          # re: 用頓號(hào)將若干個(gè)字符串分隔開 2007-03-06 11:23 我為J狂

          @dreamstone
          寫成您說的那樣更改:
          for (int i = 0; i < words.length - 1; i++) {
          word.append(words[i]).append("、");
          }

          那么我最后一行的代碼:word.append(words[i]);
          其中的變量i就沒有定義了,顯然是不行的。

          對于您提出的粘貼錯(cuò)誤問題我能理解;我舉例說明一下,
          //代碼1
          for(Iterator it=list.iterator();it.hasNext();)
          {
          }
          //代碼2
          Iterator it=list.iterator();
          while(it.hasNext())
          {
          }
          對于以上兩段代碼,代碼1發(fā)生粘貼錯(cuò)誤的幾率要遠(yuǎn)遠(yuǎn)小于代碼2。  回復(fù)  更多評(píng)論   

          # re: 用頓號(hào)將若干個(gè)字符串分隔開 2007-03-09 09:35 slx

          那就這么寫吧
          for (int i = 0; i < words.length; i++) {
          if(i != 0){
          world.append("、");
          }
          word.append(words[i]);
          }
            回復(fù)  更多評(píng)論   

          # re: 用頓號(hào)將若干個(gè)字符串分隔開 2007-03-09 18:01 我為J狂

          @slx
          哈哈,到目前為止,您的方法最棒!謝謝。  回復(fù)  更多評(píng)論   

          <2007年3月>
          25262728123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(11)

          隨筆分類(48)

          文章分類(29)

          常去逛逛

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 荣昌县| 西昌市| 滨州市| 旬邑县| 湘潭市| 兴国县| 靖宇县| 繁峙县| 独山县| 丰台区| 皋兰县| 怀来县| 洛阳市| 绥宁县| 哈巴河县| 沈丘县| 金平| 舟曲县| 察哈| 类乌齐县| 阿尔山市| 西峡县| 铅山县| 射阳县| 沽源县| 隆化县| 阳西县| 武宁县| 台南市| 金阳县| 海伦市| 镇平县| 邯郸县| 乐至县| 新晃| 古交市| 衢州市| 兴文县| 格尔木市| 闵行区| 浦城县|