C# 将字符串拆分为c中的2字字符串集
我想将字符串拆分为两个单词字符串集。比如说,C# 将字符串拆分为c中的2字字符串集,c#,regex,string,C#,Regex,String,我想将字符串拆分为两个单词字符串集。比如说, string str = "I want to split the string into 2 words" 输出应如下所示: 1: "I want" 2: "want to" 3: "to split" 4: "split the" 5: "the string" 6: "string into" 7: "into 2" 8: "2 words" 最好的方法是什么 我试过这样做 var pairs = textBox1.Text.Split('
string str = "I want to split the string into 2 words"
输出应如下所示:
1: "I want"
2: "want to"
3: "to split"
4: "split the"
5: "the string"
6: "string into"
7: "into 2"
8: "2 words"
最好的方法是什么
我试过这样做
var pairs = textBox1.Text.Split(' ')
.Select((s, i) => new { s, i })
.GroupBy(n => n.i / 2)
.Select(g => string.Join(" ", g.Select(p => p.s)))
.ToList();
但它不起作用。我得到了以下字符串集
1: "I want"
2: "to split"
3: "the string"
4: "into 2"
5: "words"
但这不是我要找的。
我怎样才能做到这一点?任何帮助都将不胜感激。谢谢。用空格分隔,迭代到最后一项,然后在列表中放入两个带格式的项,怎么样
string str = "I want to split the string into 2 words";
var array = str.Split(' ');
var list = new List<string>();
for (int i = 0; i < array.Length - 1; i++)
{
list.Add(string.Format("{0} {1}", array[i], array[i + 1]));
}
用空格分隔,迭代到最后一项,然后将两个带格式的项放入该列表,怎么样
string str = "I want to split the string into 2 words";
var array = str.Split(' ');
var list = new List<string>();
for (int i = 0; i < array.Length - 1; i++)
{
list.Add(string.Format("{0} {1}", array[i], array[i + 1]));
}
首先,正如您所做的,将每个单词按空格分开,如下所示:
String[] words = str.Split(' ')
现在,只需迭代该数组,并将每次的两对字符串连接到一个新数组中
String[] pairs = new String[words.Length - 1];
for (int i = 0; i+1 < words.length; i++)
{
pairs[i] = string.Format("{0} {1}", words[i], words[i+1]);
}
这段代码在语法上可能不正确,但这个想法会奏效 首先,正如您所做的,将每个单词按空格分开,如下所示:
String[] words = str.Split(' ')
现在,只需迭代该数组,并将每次的两对字符串连接到一个新数组中
String[] pairs = new String[words.Length - 1];
for (int i = 0; i+1 < words.length; i++)
{
pairs[i] = string.Format("{0} {1}", words[i], words[i+1]);
}
这段代码在语法上可能不正确,但这个想法会奏效 我只是想分享一种正则表达式方法:
var s = "I want to split the string into 2 words";
var result = Regex.Matches(s, @"(\w+)(?=\W+(\w+))")
.Cast<Match>()
.Select(p => string.Format("{0} {1}", p.Groups[1].Value, p.Groups[2].Value))
.ToList();
看
使用\w+?=\w+\w+,我们确保捕获一个单词\w+,然后捕获下一个单词,但不使用前瞻?=\w+\w+使用\w+,但忽略非单词字符\w+。然后我们在Select中加入两个单词。我只想分享一种正则表达式方法:
var s = "I want to split the string into 2 words";
var result = Regex.Matches(s, @"(\w+)(?=\W+(\w+))")
.Cast<Match>()
.Select(p => string.Format("{0} {1}", p.Groups[1].Value, p.Groups[2].Value))
.ToList();
看
使用\w+?=\w+\w+,我们确保捕获一个单词\w+,然后捕获下一个单词,但不使用前瞻?=\w+\w+使用\w+,但忽略非单词字符\w+。然后,我们只需将这两个单词连接到Select中。您介意编辑字符串吗,还是必须按原样编辑。否则,您可以添加一个“-”符号或其他东西,然后使用该符号拆分它?否则,一个简单的for循环将在您每隔一个忽略它的地方执行。它是一个动态字符串。所以我需要把我提到的单词列表分成两组。这个任务的单词是什么?空格之间有什么吗?好的@RajDeInno,我现在就发布答案。你介意编辑字符串吗?还是必须保持原样。否则,您可以添加一个“-”符号或其他东西,然后使用该符号拆分它?否则,一个简单的for循环将在您每隔一个忽略它的地方执行。它是一个动态字符串。所以我需要把我提到的单词列表分成两组。这个任务的单词是什么?空格之间有什么吗?好的@RajDeInno,我现在发布答案。