2011-09-29 11 views
3

首先,我必須爲我可憐的英語道歉,請讓我解釋我的情況, 假設我有2個文本框供用戶輸入。在服務器端,我想將兩個字符串組合爲由','字符分隔的單個字符串。例如,如果用戶 將第一個文本框輸入爲「hello world」,第二個文本框「foo bar」輸入 ,則最終字符串應爲「hello world,foo bar」。該字符串稍後需要被拆分爲 以供其他操作使用其內容。所以當字符串被拆分時,由於 ','字符被用作分隔符,結果字符串 將分別爲 string [0] =「hello world」 string [1] =「foo bar」 。使用正則表達式處理我自己的轉義字符

當用戶在他們的字符串中鍵入','字符時,這當然是脆弱的,導致 中的字符串無法正確分割。例如,當用戶在第一個文本框中輸入「hello,world」 ,在第二個文本框中輸入「foo,bar」時,最後的字符串將是 「hello,world,foo,bar」,並且分割結果會錯誤地是4個獨立的字符串。

我想出了一個自定義轉義字符的想法。也就是說,如果用戶輸入','字符,則必須在服務器端添加'/' 字符。例如,如果用戶輸入「hello,world」和「foo,bar」 ,則最終的字符串將是「hello /,world,foo /,bar」,現在可以拆分它,因爲確切的 分隔符是已知的一個沒有'/'字符的'''字符預先顯示出來。

我寫一些Java代碼來處理,如下所示:

String testText = "hello/,world,foo/,bar"; 
    String[] split = testText.split("[^/],"); 
    for(int i=0; i<split.length; i++) 
    { 
     System.out.println(split[i]); 
    } 

返回的結果是

串[0] =你好/,WORL

串[1] =富/ ,bar

這是不正確的,因爲單詞「world」的'd'字符丟失了。 似乎這個案件的分隔符是一些不符合'/'的字符,這很容易理解。 但是我想要的東西就像「用分隔符分割字符串」,「只跟在不是'/'字符的字符之後,所以適用於我的情況,字符串的中間 中只有','字符將被分割所以最終的結果將是正確如下:

串[0] =你好/,世界

串[1] =富/,酒吧

我意識到,我可能要改寫我的正常表達,但我不知道如何。 任何建議將受到歡迎。

+2

儘量避免加入字符串。有太多方法可以做錯事。例如,你也需要跳過'/'s。有人可以輸入「你好/」和「世界」。這將導致'你好/,世界''。 –

+0

*「任何建議都會受到歡迎。」*提出問題。 –

回答

6

使用背後

testText.split("(?<!/),"); 

負看看neagative回顧後確保存在,之前沒有/沒有匹配它。

+0

stema,它的作品謝謝:) –

相關問題