字符串不能通过Tab或Space分割。这是哪个角色?

时间:2016-03-28 09:31:23

标签: vb.net intersystems-cache

我有这个字符串,如下所示:

613 3503||0 82 1 49 1 1950 63543 11301 3 CORP-A1 1656.06 150 0 N 82.8 198.72 12.42 N 0 0 0 N Y 1

但是,当我用TAB或SPACE对它进行字符串拆分时,它不会通过Tab或空格分割。它仍然作为整体输出。

我尝试了以下内容:

= fromVisMtext.Text.Split(vbTab)
= fromVisMtext.Text.Split(" ")

此外,当我粘贴所述字符串时,在堆栈溢出处,它不是分隔的并且彼此连接。

6133503||0821491195063543113013CORP-A11656.061500N82.8198.7212.42N000NY1

我上面粘贴的字符串是我的,我手动添加了空格,因为这里StackOverflow删除了所说的分隔符。

此外,所述字符串来自Intersystems Cache的VisM控件。

如何用Tab或Space分割这个字符串?它似乎也不是,但数据肯定是由空格或制表符分隔。 the string

编辑这是Dim theGlobals = String.Join(" ", fromVisMtext.Text.Select(Function(ch) Microsoft.VisualBasic.AscW(ch).ToString("x4")))

的结果

enter image description here

1 个答案:

答案 0 :(得分:1)

在一般情况下(空间标签非破坏空间等分隔符),您可以尝试按任意空格分割,例如:

  String source = @"613 3503||0 82 1 49 1 1950 63543 11301 3 CORP-A1 1656.06 150 0 N 82.8 198.72 12.42 N 0 0 0 N Y 1";

  var result = Regex
    .Split(source, @"\s")
    .Where(item => !String.IsNullOrEmpty(item));
    //.ToArray(); // <- if you want to materialize

  // 613
  // 3503||0
  // 82
  // 1
  // ... 
  // N
  // Y
  // 1
  Console.Write(String.Join(Environment.NewLine, result));

如果确定分隔符可以是空格(' ')或制表符('\t'),则只能拆分:

  var result = source.Split(new Char[] { ' ', '\t' }, 
    StringSplitOptions.RemoveEmptyEntries);