Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在忽略特殊字符串时拆分字符串_C#_String_Split - Fatal编程技术网

C# 如何在忽略特殊字符串时拆分字符串

C# 如何在忽略特殊字符串时拆分字符串,c#,string,split,C#,String,Split,假设我有一个字符串需要用{,.}分割。 包含无法拆分的全名的给定字符串 比如说 预期的结果是: {Jhon Due,was,drawing,the,quick,brown,vfox,Alex 国王,画,一只狐狸} 当涉及到大数据处理时,我们希望了解有关正确方法的信息 谢谢 您不能仅使用split执行此操作。例如,如果有任何特殊字符串,您可以拆分然后搜索结果,然后生成最终结果。您不能仅使用拆分。例如,如果有任何特殊字符串,您可以拆分并搜索结果,然后生成最终结果。您可以使用正则表达式进行此操作。请尝

假设我有一个字符串需要用{,.}分割。 包含无法拆分的全名的给定字符串

比如说

预期的结果是:

{Jhon Due,was,drawing,the,quick,brown,vfox,Alex 国王,画,一只狐狸}

当涉及到大数据处理时,我们希望了解有关正确方法的信息


谢谢

您不能仅使用split执行此操作。例如,如果有任何特殊字符串,您可以拆分然后搜索结果,然后生成最终结果。

您不能仅使用拆分。例如,如果有任何特殊字符串,您可以拆分并搜索结果,然后生成最终结果。

您可以使用正则表达式进行此操作。请尝试以下代码:

var fullString = "Jhon Due was drawing,the quick brown fox. Alex King draw a fox";
var ignoreSplitArray = new[] {"Jhon Due", "Alex King"};

var ignore = string.Join("|", ignoreSplitArray);
var regex = new Regex($" |,|({ignore})");
var result = regex.Split(fullString).Where(s => s.Length > 0).ToArray();

你可以用正则表达式来做。请尝试以下代码:

var fullString = "Jhon Due was drawing,the quick brown fox. Alex King draw a fox";
var ignoreSplitArray = new[] {"Jhon Due", "Alex King"};

var ignore = string.Join("|", ignoreSplitArray);
var regex = new Regex($" |,|({ignore})");
var result = regex.Split(fullString).Where(s => s.Length > 0).ToArray();
我建议使用正则表达式而不是拆分;我们可以尝试将John Due和Alex King等名字包含到模式中,而不是维护它们的数组,这在执行大型数据处理时是很困难的:

using System.Text.RegularExpressions;

string source = "John Due was drawing the quick brown fox. Alex King draws a fox";
string pattern = @"([A-Z][a-z]+(\s[A-Z][a-z]+)*)|([a-z]+)";

var result = Regex
  .Matches(source, pattern)
  .OfType<Match>()
  .Select(match => match.Value);

Console.Write(string.Join("; ", result)); 
编辑:如果文本中出现数字see注释,则必须将其包括在模式中,例如

结果:

John Due; was; drawing; the; quick; brown; fox; Alex King; draws; a; fox
John111 Due; was; drawing; the; quick; 123; brown; fox; Alex King; draws; a; fox
John111 Due; Джон Дью; was; drawing; the; quick; 123; ۰۱۲; brown; fox; Alex King; draws; a; fox
另一种可能性

string source = 
 "John111 Due (Джон Дью) was drawing the quick 123 [۰۱۲] brown fox. Alex King draws a fox";

string pattern = @"(\p{Lu}\w+(\s\p{Lu}\w+)*)|(\w+)";
如果要提取非英语字母(如俄语)和数字(如波斯语)

结果:

John Due; was; drawing; the; quick; brown; fox; Alex King; draws; a; fox
John111 Due; was; drawing; the; quick; 123; brown; fox; Alex King; draws; a; fox
John111 Due; Джон Дью; was; drawing; the; quick; 123; ۰۱۲; brown; fox; Alex King; draws; a; fox
我建议使用正则表达式而不是拆分;我们可以尝试将John Due和Alex King等名字包含到模式中,而不是维护它们的数组,这在执行大型数据处理时是很困难的:

using System.Text.RegularExpressions;

string source = "John Due was drawing the quick brown fox. Alex King draws a fox";
string pattern = @"([A-Z][a-z]+(\s[A-Z][a-z]+)*)|([a-z]+)";

var result = Regex
  .Matches(source, pattern)
  .OfType<Match>()
  .Select(match => match.Value);

Console.Write(string.Join("; ", result)); 
编辑:如果文本中出现数字see注释,则必须将其包括在模式中,例如

结果:

John Due; was; drawing; the; quick; brown; fox; Alex King; draws; a; fox
John111 Due; was; drawing; the; quick; 123; brown; fox; Alex King; draws; a; fox
John111 Due; Джон Дью; was; drawing; the; quick; 123; ۰۱۲; brown; fox; Alex King; draws; a; fox
另一种可能性

string source = 
 "John111 Due (Джон Дью) was drawing the quick 123 [۰۱۲] brown fox. Alex King draws a fox";

string pattern = @"(\p{Lu}\w+(\s\p{Lu}\w+)*)|(\w+)";
如果要提取非英语字母(如俄语)和数字(如波斯语)

结果:

John Due; was; drawing; the; quick; brown; fox; Alex King; draws; a; fox
John111 Due; was; drawing; the; quick; 123; brown; fox; Alex King; draws; a; fox
John111 Due; Джон Дью; was; drawing; the; quick; 123; ۰۱۲; brown; fox; Alex King; draws; a; fox

您是否需要ignoreSplitArray中的项目在结果中的正确位置,或者项目在结果中的位置无关紧要?我必须按当前顺序维护项目。您是否需要ignoreSplitArray中的项目在结果中的正确位置,或者结果中项目的位置无关紧要吗?我必须按照当前顺序维护项目。由于。。。和ignoreSplitArray到{Jhon1111 Due,…。请自己尝试这是一种很好的方法,但对于我的情况来说太通用了。假设我有没有大写的字符串,它将不起作用。谢谢你的描述。我已将源代码更改为Jhon1111 Due…和ignoreSplitArray到{Jhon1111到期,…请自己试试这是一种很好的方法,但对我的情况来说太普通了。假设我有没有大写的字符串,它就不起作用了。谢谢你的描述。这就是我要找的。谢谢。非常尖锐的方法!这就是我要找的。谢谢。非常尖锐的方法!