[語法] 陣列中資料存逗號的截斷問題

看板java作者 (clcy)時間8年前 (2016/12/21 10:55), 8年前編輯推噓3(3041)
留言44則, 7人參與, 最新討論串1/1
各位前輩好: 小弟是java新手,最近在寫一個功能時需要把文字塞進陣列裡,但是再塞到另一個 陣列時會發生如果第一次的文字內容裡包含逗號就會被截斷。導致資料不完全。 查了一下應該是因為陣列是用逗號來分隔資料,所以當文字中有包含逗號就會有問題 請問各位有什麼解法嗎? 謝謝大家。 補充: sm這是市面上的開發工具所附的class String file[]=null; file = new String[1]; file[0]="abc,efg"; sm(pop3Server, smtpServer, mailAddress, subject, contents, file, "text/html"); sm的file是 java.lang.String[] -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.221.49.25 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1482288902.A.465.html

12/21 10:56, , 1F
如果理解錯誤也請前輩指導一下
12/21 10:56, 1F

12/21 11:38, , 2F
把你的做法貼出來看看吧
12/21 11:38, 2F

12/21 13:08, , 3F
陣列不是用逗號分隔,問題是你用的是什麼陣列
12/21 13:08, 3F
※ 編輯: conlich (61.221.49.25), 12/21/2016 13:26:02

12/21 13:26, , 4F
如上面補充:file裡的資料會變成只有abc
12/21 13:26, 4F

12/21 13:39, , 5F
我剛試了,不會啊,file[0]還是abc,efg
12/21 13:39, 5F

12/21 13:41, , 6F
所以有可能是sm這個class搞得鬼,我用System.out.println
12/21 13:41, 6F

12/21 13:41, , 7F
去看也是,但一丟進sm裡執行就會有問題.
12/21 13:41, 7F

12/21 13:42, , 8F
對了,sm這個功能是要寄e-mail的功能,file會去夾檔案
12/21 13:42, 8F

12/21 13:42, , 9F
不知道有沒有關係,抱歉忘了說明這點
12/21 13:42, 9F
※ 編輯: conlich (61.221.49.25), 12/21/2016 13:47:48

12/21 16:13, , 10F
你的code沒有"再塞到另一個陣列"的行為, 可能要看sm這method
12/21 16:13, 10F

12/21 16:13, , 11F
的文件看是否有針對file參數的詳細說明
12/21 16:13, 11F

12/21 16:33, , 12F
不好意思,sm的file是String[],所以我認為是塞到另一陣列
12/21 16:33, 12F

12/21 16:34, , 13F
不知道這樣子算不算??
12/21 16:34, 13F

12/21 16:44, , 14F
你要進去看sm裡面是怎麼實作的。
12/21 16:44, 14F

12/21 16:45, , 15F
然後要再看一下java是怎麼傳參數的。
12/21 16:45, 15F

12/21 17:00, , 16F
好的,但只有class能夠看得到嗎?
12/21 17:00, 16F

12/21 17:21, , 17F
你說file裡面只有abc是在哪裡看的? 跑完sm之後再另外印出?
12/21 17:21, 17F

12/21 17:22, , 18F
如果是跑完sm再印出來看 那就是sm有對你的陣列做了修改
12/21 17:22, 18F

12/21 17:22, , 19F
不過一個寄信的小API 想不到有啥理由去動你的陣列
12/21 17:22, 19F

12/21 17:23, , 20F
可以說一下你是怎麼知道file只有abc的嗎? foreach印出來看?
12/21 17:23, 20F

12/21 17:29, , 21F
是從error裡看出來的,因為這裡是附檔名稱,抓不到檔案就
12/21 17:29, 21F

12/21 17:29, , 22F
會產生error了,看了才發現在逗號被截斷了
12/21 17:29, 22F

12/21 17:51, , 23F
誰吐的error? sm?
12/21 17:51, 23F

12/21 17:51, , 24F
如果只有一個元素,會不會跳ERROR? 確定丟進去的格式是對的?
12/21 17:51, 24F

12/21 17:52, , 25F
error可以貼出來看看嗎
12/21 17:52, 25F

12/21 17:52, , 26F
用try-catch把sm包起來 然後再後面把file[]印出來看才能確定
12/21 17:52, 26F

12/21 17:53, , 27F
搞不好sm的error是跟你說第一個元素abc格式錯了
12/21 17:53, 27F

12/21 18:23, , 28F
java.io.FileNotFoundException: filepath\abc (系統找
12/21 18:23, 28F

12/21 18:23, , 29F
不到指定的檔案。) <--- error
12/21 18:23, 29F

12/21 18:27, , 30F
這是sm吐出來的error
12/21 18:27, 30F

12/21 19:27, , 31F
你自己想像太多了,sm訊息寫的字串不是你原本丟進去的,有
12/21 19:27, 31F

12/21 19:28, , 32F
太多可能的原因,"陣列放到另一個陣列時截斷"這點是不可能
12/21 19:28, 32F

12/21 19:28, , 33F
的...因為陣列就跟 , 一點關係都沒有
12/21 19:28, 33F

12/21 19:31, , 34F
String[]只是存String物件的參考,複製根本不會動到內容
12/21 19:31, 34F

12/21 19:33, , 35F
而且String還是Immutable,那個訊息一定是sm內對傳入的參數
12/21 19:33, 35F

12/21 19:34, , 36F
做其他處理後的結果
12/21 19:34, 36F

12/21 21:06, , 37F
原來如此,所以是我個人想像,那我還是在前置作業想辦法
12/21 21:06, 37F

12/21 21:06, , 38F
處理掉好了,謝謝。
12/21 21:06, 38F

12/23 10:51, , 39F
String [] file = {"abc", "efg"};
12/23 10:51, 39F

12/23 10:52, , 40F
單純語法搞錯...
12/23 10:52, 40F

12/26 16:07, , 41F
你好,我的檔名是叫abc附檔名叫efg,所以我是寫入abc.efg
12/26 16:07, 41F

12/26 16:08, , 42F
file[0]="abc,efg"; 這裡的"abc.efg"是打錯了,sorry誤導
12/26 16:08, 42F

12/26 20:03, , 43F
先問你一下 你的API有沒有給範例或是文件
12/26 20:03, 43F

12/27 09:30, , 44F
沒有sample耶, 只有說API每個參數的型別,謝謝你。
12/27 09:30, 44F
文章代碼(AID): #1OMUy6Hb (java)
文章代碼(AID): #1OMUy6Hb (java)