簡體   English   中英

如何確定 String.Split() 中使用的字符

[英]How to determine character used in String.Split()

如果我使用 .Split() 如何找出導致分裂的字符?

string myMessage = "Apple|Car,Plane-Truck";
//Break apart string
var splits = myMessage.Split(new Char [] {'|', ',', '-'});

foreach (string piece in splits)
{
}

我如何確定哪個 Char 最終被用於拆分?

在您給出的示例中,它將對所有這些進行拆分。 但通常,您只會看到字符串中包含哪些已定義的拆分字符:

var sourceString = "Apple|Car,Plane-Truck";
var allSplitChars = new[] {'|', ',', '-', '.', '!', '?'};

// Find only the characters that are contained in the source string
List<char> charsUsedToSplit = allSplitChars.Where(sourceString.Contains).ToList();
string myMessage = "Apple|Car,Plane-Truck"; //Break apart string var splits = myMessage.Split(new Char[] { '|', ',', '-' }); int accumulated_length = 0; foreach (string piece in splits) { accumulated_length += piece.Length + 1; if (accumulated_length <= myMessage.Length) { Console.WriteLine("{0} was split at {1}", piece, myMessage[accumulated_length - 1]); } else { Console.WriteLine("{0} was the last one", piece); } }

列表中的任何字符都將用於拆分..你能澄清一下你實際上想要做什么嗎? 在您的示例中,拆分后的標記將是“Apple”、“Car”、“Plane”、“Truck”,因此您的每個角色都將用於拆分..

如果您正在嘗試確定哪個字符導致每個標記的拆分,那么您可能會自己實現拆分並跟蹤:

List<Tuple<String, Char>> Splitter(string msg, char[] chars) {
  var offset = 0;
  var splitChars = new HashSet<char>(chars); 
  var splits = new List<Tuple<String, Char>>();
  for(var idx = 0; idx < msg.Length; idx++) {
    if (splitChars.Contains(msg[idx])) {
      var split = Tuple.Create(msg.Substring(offset, idx - offset), msg[idx]);
      splits.Add(split);
      offset = idx + 1;
    } 
  }
  return splits;
}

string myMessage = "Apple|Car,Plane-Truck";
var splits = Splitter(myMessage, new [] {'|', ',', '-'});
foreach (string piece in splits)
{
    Console.WriteLine("word: {0}, split by: {1}", piece.Item1, piece.Item2);
}

暫無
暫無

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

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