iT邦幫忙

2

[C#] string.split 問題!

https://ithelp.ithome.com.tw/upload/images/20190902/201173575QLgOWobER.png
如圖
我的temp是一個string,我想用空格分開其內部單字程式碼如下

temp.Split(' ', 6, StringSplitOptions.RemoveEmptyEntries);

明明第二個參數他說明是寫要int,結果錯誤一直說int無法轉為char,
第三個參數也是照它內建設的,這函數到底要怎麼用才會對呢?

7
米歐
iT邦新手 4 級 ‧ 2019-09-02 17:22:06
最佳解答

簡單說,你第一個參數錯了,是 char[] 不是 char。

上面的大大們都填char[] 當然對。

看更多先前的回應...收起先前的回應...
wrxue iT邦新手 5 級 ‧ 2019-09-02 17:25:00 檢舉

那請問大大為何

temp.Split(' ');

這樣也行,裡面也是char而不是char[]@_@

米歐 iT邦新手 4 級 ‧ 2019-09-02 17:30:32 檢舉
wrxue iT邦新手 5 級 ‧ 2019-09-02 17:32:06 檢舉

我確認了,是正常的字串分離

Split(' ');所傳遞的參數是params char[]
params關鍵字說明
https://docs.microsoft.com/zh-tw/dotnet/csharp/language-reference/keywords/params

米歐 iT邦新手 4 級 ‧ 2019-09-02 17:39:06 檢舉

網址點開來,看 Split(Char[]) 下面的 字串. Split (Char []) 和編譯器多載解析 他有告訴你為什麼能這樣用。

wrxue iT邦新手 5 級 ‧ 2019-09-02 17:49:28 檢舉

我看到您說的了大大,非常清楚,藉由這次機會讓我知道怎麼看MSDN文件。謝謝。

米歐 iT邦新手 4 級 ‧ 2019-09-02 18:08:22 檢舉

很開心能夠幫助到你 /images/emoticon/emoticon42.gif

2
dragonH
iT邦大師 1 級 ‧ 2019-09-02 17:07:30

ideone

我試是沒有問題的

你要不要考慮貼完整的 code

看更多先前的回應...收起先前的回應...
wrxue iT邦新手 5 級 ‧ 2019-09-02 17:11:59 檢舉
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            string temp = "Hello World Test Split";
            temp.Split(' ', 6, StringSplitOptions.RemoveEmptyEntries);
        }
    }
}

https://ithelp.ithome.com.tw/upload/images/20190902/20117357xpJlpD7fgp.png
拜託了QQ 一直卡這個

YoChen iT邦新手 2 級 ‧ 2019-09-02 17:17:04 檢舉

Count參數放6當然不能切呀~XDDD
您給的String只能切4份而已~
您可以用

temp.Split(' ');

就好
然後記得把它存進string的Array裡才能使用,例如

string[] tempArray = temp.Split(' ');
dragonH iT邦大師 1 級 ‧ 2019-09-02 17:18:06 檢舉

ideone

一模一樣的 code

我的沒問題/images/emoticon/emoticon17.gif

手邊沒 vs 可以測

妳會不會是 code intellisense 選錯之類的(我瞎猜的

wrxue iT邦新手 5 級 ‧ 2019-09-02 17:20:04 檢舉

就算我把Count改成1,也是會報錯,我會想用這樣的原因是不希望他回傳空陣列,所以需要指派第三個參數。
ps:第二參數不是只單一字串內最多幾個字嗎?還是我理解錯了。

YoChen iT邦新手 2 級 ‧ 2019-09-02 17:22:19 檢舉

原來切超過也可以哦!?
又學到了一課~XDDD

dragonH iT邦大師 1 級 ‧ 2019-09-02 17:22:52 檢舉

根據我測的結果

第二個參數應該是回傳的陣列長度

wrxue iT邦新手 5 級 ‧ 2019-09-02 17:28:54 檢舉

我的還是無法動
除非先把空格放到char[]裡面

char[] s = new char[] { ' ' };
string[] tempSplited = temp.Split(s, 2, StringSplitOptions.RemoveEmptyEntries);
米歐 iT邦新手 4 級 ‧ 2019-09-02 17:29:50 檢舉

去年鐵人賽對於切割字串有做分享,希望能幫助到你
https://ithelp.ithome.com.tw/articles/10202758

dragonH iT邦大師 1 級 ‧ 2019-09-02 17:31:46 檢舉

官方的文件都是說要放陣列沒錯

我不知道為什麼 ideone 可以用 字串/images/emoticon/emoticon06.gif

米歐 iT邦新手 4 級 ‧ 2019-09-02 17:42:44 檢舉

我在我的回覆說明了 /images/emoticon/emoticon42.gif

dragonH iT邦大師 1 級 ‧ 2019-09-02 18:36:49 檢舉

還是不太懂XD

為什麼一樣的 code

ideone 能跑

他會有 error

1
海綿寶寶
iT邦超人 1 級 ‧ 2019-09-02 17:09:49
[System.Runtime.InteropServices.ComVisible(false)]
public string[] Split (char[] separator, int count, StringSplitOptions options);
string s1 = ",ONE,,TWO,,,THREE,,";
char[] charSeparators = new char[] {','};
result = s1.Split(charSeparators, 2, StringSplitOptions.None);
Show(result);

官方文件

選我正解

wrxue iT邦新手 5 級 ‧ 2019-09-02 17:15:39 檢舉

不好意思大大,我不太懂你要表達甚麼
您的程式碼的確可以執行,但若我把

result = s1.Split(charSeparators, 2, StringSplitOptions.None);

改成

result = s1.Split(' ', 2, StringSplitOptions.None);

一樣又不能跑了

/images/emoticon/emoticon38.gif/images/emoticon/emoticon38.gif/images/emoticon/emoticon38.gif

0
小魚
iT邦大師 1 級 ‧ 2019-09-02 17:37:26
string[] array = temp.Split(new char[] { ' ' }, 6, StringSplitOptions.RemoveEmptyEntries);

Split函式總共有6種傳入參數的方式,
其中沒有包含你原本的方式.

我要發表回答

立即登入回答