単語の区切り文字を使用して文字列を分割したい場合はどうすればいいですか?
たとえば、This is a sentence
です。
is
に分割してThis
とa sentence
を取得したいです。
Java
では、区切り文字として文字列を送信できますが、C#
でこれを達成するにはどうすればよいですか。
http://msdn.Microsoft.com/ja-jp/library/system.string.split.aspx
ドキュメントからの例:
string source = "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]";
string[] stringSeparators = new string[] {"[stop]"};
string[] result;
// ...
result = source.Split(stringSeparators, StringSplitOptions.None);
foreach (string s in result)
{
Console.Write("'{0}' ", String.IsNullOrEmpty(s) ? "<>" : s);
}
あなたは Regex.Split メソッドを使うことができます。
Regex regex = new Regex(@"\bis\b");
string[] substrings = regex.Split("This is a sentence");
foreach (string match in substrings)
{
Console.WriteLine("'{0}'", match);
}
編集:これはあなたが与えた例を満たしています。通常のString.Splitも、単語 "This"の最後にある "is"で分割されます。なぜ私はRegexメソッドを使い、 "is"の周りにWordの境界を含めました。ただし、この例を誤って書いただけの場合は、String.Splitで十分でしょう。
この記事に対する既存の回答に基づいて、これにより実装が単純化されます。
namespace System
{
public static class BaseTypesExtensions
{
/// <summary>
/// Just a simple wrapper to simplify the process of splitting a string using another string as a separator
/// </summary>
/// <param name="s"></param>
/// <param name="pattern"></param>
/// <returns></returns>
public static string[] Split(this string s, string separator)
{
return s.Split(new string[] { separator }, StringSplitOptions.None);
}
}
}
string s = "This is a sentence.";
string[] res = s.Split(new string[]{ " is " }, StringSplitOptions.None);
for(int i=0; i<res.length; i++)
Console.Write(res[i]);
編集:あなたはのみ単語 "を"文から削除し、単語 "this"をそのままにしておくという事実を保持するために、 "is"の両側にスペースを入れてスペースを埋めます。無傷。
...要するに:
string[] arr = "This is a sentence".Split(new string[] { "is" }, StringSplitOptions.None);
String.Replace()を使用して、目的の分割文字列を文字列に含まれていない文字に置き換えてから、その文字に対してString.Splitを使用して、同じ効果を得るために結果の文字列を分割できます。
またはこのコードを使用してください。 (同じ:new String [])
.Split(new[] { "Test Test" }, StringSplitOptions.None)
これは、文字列の区切り文字を使って分割する拡張機能です。
public static string[] Split(this string value, string seperator)
{
return value.Split(new string[] { seperator }, StringSplitOptions.None);
}
使用例
string mystring = "one[split on me]two[split on me]three[split on me]four";
var splitStrings = mystring.Split("[split on me]");
var dict = File.ReadLines("test.txt")
.Where(line => !string.IsNullOrWhitespace(line))
.Select(line => line.Split(new char[] { '=' }, 2, 0))
.ToDictionary(parts => parts[0], parts => parts[1]);
or
enter code here
line="[email protected][email protected]";
string[] tokens = line.Split(new char[] { '=' }, 2, 0);
ans:
tokens[0]=to
token[1][email protected][email protected]