簡體   English   中英

String.Split僅在C#中的第一個分隔符上?

[英]String.Split only on first separator in C#?

String.Split便於在分隔符上拆分多個部分的字符串。

我該如何繼續僅在第一個分隔符上拆分字符串。 我有一個字符串

"Time: 10:12:12\r\n"

我想要一個看起來像的陣列

{"Time","10:12:12\r\n"}

最好的方法取決於您希望解析的靈活性,關於可能的額外空間等。 檢查確切的格式規范以了解您的需求。

yourString.Split(new char[] { ':' }, 2)

將限制你兩個2個子串。 但是,這不會修剪第二個字符串開頭的空格。 但是,您可以在拆分后的第二個操作中執行此操作。

yourString.Split(new char[] { ':', ' ' }, 2,
    StringSplitOptions.RemoveEmptyEntries)

應該可以工作,但是如果您嘗試拆分包含空格的標題名稱,則會中斷。

yourString.Split(new string[] { ": " }, 2,
    StringSplitOptions.None);

將完全按照您的描述進行,但實際上需要存在空間。

yourString.Split(new string[] { ": ", ":" }, 2,
    StringSplitOptions.None);

使空間可選,但如果有TrimStart()空格,您仍需要TrimStart()

為了保持格式有些靈活,並且您的代碼可讀,我建議使用第一個選項:

string[] split = yourString.Split(new char[] { ':' }, 2);
// Optionally check split.Length here
split[1] = split[1].TrimStart();

在上面的示例中,您可以拆分“:”(即帶有尾隨空格的冒號),因為這似乎就是您所做的。 如果你真的只拆分第一個分隔符,你會在第二個數組元素中看到一個前導空格。

但是,您應該看看Split的這個重載...

http://msdn.microsoft.com/en-us/library/c1bs0eda.aspx

public string[] Split(
  char[] separator,
  int count
)

...允許您指定最大數量的子串。

?("Time: 10:12:12\r\n").Split(new char[] { ':', ' ' }, 2, 
   StringSplitOptions.RemoveEmptyEntries)
{Dimensions:[2]}
    [0]: "Time"
    [1]: "10:12:12\r\n"

其他選擇:

?("Time: 10:12:12\r\n").Split(new char[] { ':' }, 2)
{Dimensions:[2]}
    [0]: "Time"
    [1]: " 10:12:12\r\n"
?("Time: 10:12:12\r\n").Split(new char[] { ':' }, 1)
{Dimensions:[1]}
    [0]: "Time: 10:12:12\r\n"
?("Time: 10:12:12\r\n").Split(new char[] { ':' }, 3)
{Dimensions:[3]}
    [0]: "Time"
    [1]: " 10"
    [2]: "12:12\r\n"

我已經采用了Thorarin上面的答案的變體,下面應該能夠處理你的要求,加上修剪空間。

yourString.Split(new []{'-'},2).Select(s => s.Trim())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM