昨日からVisual Studio 2013 Express Desktop で C# を勉強し始めましたビギナーです。
下記のコードで双方最後に「\」が付いてしまいます。
多分、ものすごく基本的なことを理解していないからだと思いますが、ネットで検索してもこのような事例と回避方法見当たりません。
賢者のみなさま、稚拙な質問で申し訳ございませんがご教授よろしくお願いします。
string s = "abc" + @""";
string s = "abc" + Microsoft.VisualBasic.Strings.Chr(34);
変数の内容は abc"\ なってしまいます。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
少し方向性が変わりますが、IPアドレスをHTMLから検索するのであれば
正規表現を使うほうが良い気がします。
lang
1static void Main(string[] args) 2{ 3 var htmlList = new List<string>(); 4 htmlList.Add(@"<div style=""padding:10px;"">123.219.218.114</div>"); 5 htmlList.Add(@"<div style=""padding:10px;"">0.0.0.1</div>"); 6 htmlList.Add(@"<div style=""padding:10px;"">nisemono</div>"); 7 htmlList.Add(@"<div style=""padding:10px;""></div>"); 8 htmlList.Add(@"<div style=""padding:10px;"">256.256.256.256</div>"); 9 htmlList.Add(@"<div style=""padding:10px;"">123.0.0</div>"); 10 htmlList.Add(@"<div style=""padding:10px;"">123219218114</div>"); 11 htmlList.Add(@"<div style=""padding:10px;"">255.255.255.255</div>"); 12 13 var result = GetIpList(htmlList.ToArray()); 14 15 if(result.Count != 0) 16 { 17 foreach (var current in result) 18 { 19 Console.WriteLine(current); 20 } 21 } 22 else 23 { 24 Console.WriteLine("なし"); 25 } 26 Console.ReadKey(); 27} 28 29static List<string> GetIpList(string[] htmlList) 30{ 31 const string IPv4Pattern = @"\d{1,3}(\.\d{1,3}){3}(/\d{1,2})?"; 32 var returnValue = new List<string>(); 33 foreach(var current in htmlList) 34 { 35 //need using System.Text.RegularExpressions; 36 var result = Regex.Match(current, IPv4Pattern); 37 if(result.Success) 38 { 39 returnValue.Add(result.Value); 40 } 41 } 42 return returnValue; 43}
「C# 正規表現」とかで検索して見てください。
投稿2015/04/20 06:42
総合スコア4791
0
こんにちは。
ウォッチ上の問題であれば、ウォッチ上の文字列はエスケープされます。
なので「abc"」("\ではなく"ですよね?)と表示されるのは正常です。
画面やコンソールに表示される際には想定どおり表示されるはずです。
ためしにパスなどを取得してウォッチで見てみると、「C:\HogeHoge\PiyoPiyo」などとエスケープされているのがわかると思います。
投稿2015/04/20 04:19
編集2015/04/20 04:21総合スコア4791
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/04/20 05:48
0
""の前に@をつけると\を\としてエスケープを省略することができるので文字列がパスだった場合、見やすくなったりして便利なのですが、@""の中に " が含まれていた場合は "" とエスケープしてあげる必要があるのでそのコードを書くと
lang
1string s = "abc" + @"""";
となります。
@を使用しない場合は
lang
1string s = "abc" + "\"";
と書けます。
二つ目の
lang
1string s = "abc" + Microsoft.VisualBasic.Strings.Chr(34);
は試してみましたが\は私の環境では付きませんでしたので実装したコードを見てみたいです。
投稿2015/04/20 02:47
編集2015/04/20 02:53総合スコア128
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/04/20 04:06
2015/04/20 04:08
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/04/20 08:07
2015/04/20 08:17