您可以通过获取句子,这是由分隔的单词组开始了“”字符,然后为每个句子获取单词,这些单词由空白字符分隔。
using namespace System;
using namespace System::Collections::Generic;
using namespace System::Diagnostics;
String^ originalString = "This is a chord. This is another. This is a third. Now form a band.";
// This array contains the sentences, which are separated by '.'
array<String^>^ sentences = originalString->Split(
gcnew array<String^> { "." },
StringSplitOptions::RemoveEmptyEntries);
Debug::Assert(sentences->Length == 4);
// This list contains individual words for all sentences.
List<String^>^ words = gcnew List<String^>();
for each(String^ sentence in sentences) {
words->AddRange(sentence->Split(
gcnew array<String^> { " " },
StringSplitOptions::RemoveEmptyEntries));
}
Debug::Assert(words->Count == 15);
for each(String^ word in words) {
Console::WriteLine(word);
}
但是,如果你有兴趣的唯一的事情是个人话,您可以使用让他们在一个单一的表达LINQ:
using namespace System;
using namespace System::Collections::Generic;
using namespace System::Diagnostics;
using namespace System::Linq;
System::String^ StripDot(System::String^ input) {
return input->Replace(".", "");
}
void Test()
{
String^ originalString = "This is a chord. This is another. This is a third. Now form a band.";
IEnumerable<String^>^ words = Enumerable::Select<String^,String^>(
originalString->Split(
gcnew array<String^> { " " },
StringSplitOptions::RemoveEmptyEntries),
gcnew Func<String^,String^>(StripDot));
Debug::Assert(Enumerable::Count(words) == 15);
for each(String^ word in words) {
Console::WriteLine(word);
}
}
这是一个很好的例子,但是我在每个句子中都需要一些单词。所以根据你的String ^文本,我应该得到答案4; 3; 4; 4. –
这个信息不包括在你的问题中,不是很清楚,所以我不知道它; - ] – t3chb0t
@DeividasKiznis我更新了我的答案。你可以检查新的解决方案是否满足你的要求;-) – t3chb0t