...そして最後の「IndexOfメソッドとストリングを使用しての問題は、それが最初になるということです 」を引用言うことができます間の文字列を取得する方法がある」ではなくペアが。同様文字列関数間?
『こんにちは』 "それは
こんにちはを取得します
"" WWWWWEEEEEE "なぜ" "どうして" WWWWWEEEEEE" ARE
私はそれが配列を取得したい>こんにちは、なぜ、WWWWEEEEEE
これを行う方法はありますか?
...そして最後の「IndexOfメソッドとストリングを使用しての問題は、それが最初になるということです 」を引用言うことができます間の文字列を取得する方法がある」ではなくペアが。同様文字列関数間?
『こんにちは』 "それは
こんにちはを取得します
"" WWWWWEEEEEE "なぜ" "どうして" WWWWWEEEEEE" ARE
私はそれが配列を取得したい>こんにちは、なぜ、WWWWEEEEEE
これを行う方法はありますか?
何かこれはどうですか?
StringCollection resultList = new StringCollection();
try
{
Regex regexObj = new Regex("\"([^\"]+)\"");
Match matchResult = regexObj.Match(subjectString);
while (matchResult.Success)
{
resultList.Add(matchResult.Groups[1].Value);
matchResult = matchResult.NextMatch();
}
}
catch (ArgumentException ex)
{
// Syntax error in the regular expression
}
subjectString
が"こんにちは" "なぜ、あなたに含むリストを与えるべきである "WWWWWEEEEEE"、" AREた場合:
代わりに静的Regex
クラスを使用し、ちょうどコレクションに追加するのではなく、コンソールに試合を書き込み、よりコンパクトな例:
var subject = "\"Hello\" \"WHY ARE\" \"WWWWWEEEEEE\"";
var match = Regex.Match(subject, "\"([^\"]+)\"");
while (match.Success)
{
Console.WriteLine(match.Groups[1].Value);
match = match.NextMatch();
}
string s = '"Hello" "WHY ARE" "WWWWWEEEEEE"'
string[] words = s.Split('"');
// words is now ["Hello", " ", "WHY ARE", " ", "WWWWWEEEEEE"]
あなたは['"Hello', "WHY ARE", 'WWWWWEEEEEE"']
を取得します。その場合には、空の文字列を、あなたは'" "'
によって分割することができ、したくない場合。
一方、正規表現を使用すると、必要なものに対して最適な解決策になる可能性があります。私はC#の専門家ではないので、頭の上からコードを与えることはできませんが、これはあなたが使いたい正規表現です:"(.*?)"
これは機能しません。それはoとwの間にすべてのものを持つでしょう。私はほんのHELLOなどがほしいです。 –
'(。*?)'の代わりに '(。*?)'を使用すると効率が良くなります。空のものはスキップします。例えば、 "" " – Svish
[^ "] +)がより効率的です。そうです。しかし、OPは彼が空のものを捕まえたくないとは言わなかった。 –
string s = '"Hello" "WHY ARE" "WWWWWEEEEEE"
s.replace("\" \"", "!*!"); // custom seperator
s.Replace('"', string.empty);
string[] words = s.Split('!*!');
は、トリック、
優しさ、
を行う必要がありますダン
これは[Hello、WHY、ARE、WWWWWEEEEEE] –
良い点を与えるだろう、今編集中:) –
また、そのパラメータが言うように、持っているString.IndexOf(char value, int startIndex)方法、開始インデックスを使用することができ、そこからスキャンが開始されます。
int start = 0;
do
{
int i1 = s.IndexOf('=', start);
if (i1 < 0) break;
int i2 = s.IndexOf('=', i1 + 1);
if (i2 < 0) break;
yield return s.Substring(i1, i2 - i1);
start = i2 + 1;
}
while (start < s.Length);
私が知る限り、try-catchを削除することで簡単にすることができます。なぜなら、一度実行すると、正規表現に構文エラーが含まれていないことが分かっているからです。 – Svish
スペースを入れておきたい場合は、引用符とグループを削除して完全一致を取ることができます。 ''(^ "] +)" 'を' [^ "] +'に、 'match.Groups [1] .Value'を' match.Value'に置き換えてください。 – Svish