【问题标题】:Split special char character拆分特殊字符
【发布时间】:2017-11-02 06:24:00
【问题描述】:

我有这个用 char 1 字符分隔的字符串:

3/1k

这个 js 脚本可能有助于查看字符串

var s="3/1k";
alert(s);

我试过了

string[] s1 = Str.Split(new Char[] { (char)1 },StringSplitOptions.None);
string[] s2 = Str.Split((char)1);
string[] s3 = Str.Split('');//copy and paste of (char)1
string[] s4 = System.Text.RegularExpressions.Regex.Split( Str((char)1).ToString());

我想用分隔符(char 1)分割它

所以我应该得到一个数组

s[0]="3/1";
s[1]="";
s[2]="";
s[3]="k";

我如何用 C# 做到这一点?

【问题讨论】:

  • 不清楚。为什么它应该在所需的数组中包含两个空元素?
  • 我想拆分 ascii 1 (SOH) 而不是 ascii 49。
  • 请您以我们可以看到 SOH 字符所在位置的方式显示您的输入字符串。 I can't reproduce a problem with splitting that character.
  • 我已经看到您对 Rehan 的回复,并将其合并到我的 Fiddle 中。您是否要在保留 SOH 字符的同时进行拆分?

标签: c# split


【解决方案1】:

我认为你必须使用 '1' 而不是 (char)1

 public static void Main(string[] args){
     string str = "3/1k";
     string[] v = str.Split('1');
     foreach(string i in v)
         Console.WriteLine(i);
 }

希望这会有所帮助!

【讨论】:

  • "3/1k" 实际上是 "3"+"/"+"1"+((char)1).ToString()+((char)1).ToString() 的串联+"k" SOH 字符未出现此文本行
【解决方案2】:

如果我开始的话,你建议的前两个建议对我来说都很好:

var Str = "3/1\u0001\u0001\u0001k";

似乎 U+0001 实际上并不存在于已编译的字符串中。如果您将控制字符放入源代码(而不是例如从文件中读取它们),那么最好按照 C# 字符转义来对它们进行转义,而不是依赖于 C# 文件中的不可打印内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多