-2

正規表現の一致 (基本的には文字列) を整数に変換する際に問題があります。

Match results = Regex.Match(websr.ReadToEnd(),
                            "\\d+\\S+\\d+ results", RegexOptions.Singleline);
var count = Regex.Match(results.ToString(), "\\d+\\S+\\d+");

これらの 2 行は regex です。結果の数を抽出したい。「count」は正しい結果数を示します。次のステップで整数型に変換したい

私は他の多くのケースを試しましたが、リストボックスに0を返すか表示します{int countN = int.parse(count.ToString())}{Int32.TryParse(count,out countN)}"Input string was not in a correct format"

私はこれに本当に混乱しています。多くのトリックを試しましたが、成功しませんでした。手伝ってくれてありがとう :)

編集:ここにコードがあります:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Web;
using System.Net;
using System.Text.RegularExpressions;
using System.IO;

namespace bing
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            CookieCollection cookies = new CookieCollection();

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.bing.com/");
            request.CookieContainer = new CookieContainer();
            request.CookieContainer.Add(cookies);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            StreamReader response1 = new StreamReader(response.GetResponseStream());
            cookies = response.Cookies;

            try
            {
                string web = "http://www.bing.com";
                //post
                string getUrl = (web + "/search?q=" + textBox1.Text);


                HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(getUrl);
                HttpWebResponse webrep = (HttpWebResponse)webreq.GetResponse();
                StreamReader websr = new StreamReader(webrep.GetResponseStream());
                Match results = Regex.Match(websr.ReadToEnd(), "\\d+\\S+\\d+ results", RegexOptions.Singleline);
                var count = Regex.Match(results.ToString(), "\\d+\\S+\\d+");
                int countN = int.Parse(count.Value);



                listBox1.Items.Add(countN.ToString());
            }

            catch (Exception ex)
            {
                MessageBox.Show("Error: " + ex.Message);
            }
        }


    }
}
4

2 に答える 2

0

以下を使用する必要があります。

var count = int.Parse(Regex.Match(results.ToString(), "\\d+\\S+\\d+").Value);

入力文字列に数字のみが含まれていることを確認します。

于 2013-08-25T16:08:32.260 に答える
0

結果番号を抽出すると解決しましたが、それは123,456,789のようなもので、問題は数字の間の「、」でした。

Match results = Regex.Match(websr.ReadToEnd(), "\\d+\\S+\\d+ results", RegexOptions.Singleline);
Match count = Regex.Match(results.ToString(), "\\d+\\S+\\d+");

string countN = count.Value.Replace(",", "");
int countM = int.Parse(countN);

そして countM は 123456789 を示しています 答えてくれたすべての友達に感謝します :)

于 2013-08-26T04:57:53.687 に答える