如何在不使用HTMLDocument的情况下从c#中的html字符串访问值 [英] how to access value from html string in c# without using HTMLDocument

查看:88
本文介绍了如何在不使用HTMLDocument的情况下从c#中的html字符串访问值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

html代码



html code

<input type="hidden" name="input1" value="khan"/>







public static void dataforbank(string dat)
{
int index1 = dat.IndexOf("<input type=\"hidden\" name=\"input1\" value=\"");
string string1 = dat.Substring(index1);
string firstvalue = string1.Substring(string1.IndexOf("value=") + 7);
string go = firstvalue.Substring(0, firstvalue.IndexOf("\""));
Messagebox.Show(go);
}



答: - 汗但是当这样的HTML代码




Ans:- khan But when html code like this

<input value="khan" type="hidden" name="input1" />
<input value="kha1" type="hidden" name="input2" />
<input value="kha2" type="hidden" name="input3" />
<input value="kha3" type="hidden" name="input4" />
<input value="kha4" type="hidden" name="input5" />

如何使用相同的概念获取价值?



有html代码,但我如何按名称获取特定值?

How to access to value using same concept?

There is the html code but how do I get specific value by name?

推荐答案

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestProj
{
    class Program
    {
        struct NameValuePair
        {
           public string Name;
           public string Value;
        }
         
        static void Main(string[] args)
        {
            dataforbank("<input value=\"khan\" type=\"hidden\" name=\"input1\"/>");

            Console.ReadLine();
        }

        private static void dataforbank(string data)
        {
            char slpitchar = ' ';          
            string[] strSplitRes = data.Split(slpitchar);

            List<namevaluepair> lstNameValue = new List<namevaluepair>();

            foreach (string Param in strSplitRes)
            {
                if (Param.Contains("value="))
                {
                    string[] NameValue = Param.Split('=');

                    NameValuePair objNameValue = new NameValuePair();

                    objNameValue.Name  = NameValue[0];
                    objNameValue.Value = NameValue[1];

                    objNameValue.Value = RemoveString(objNameValue.Value, "/>");

                    lstNameValue.Add(objNameValue);
                }
                if (Param.Contains("type="))
                {
                    string[] NameValue = Param.Split('=');

                    NameValuePair objNameValue = new NameValuePair();

                    objNameValue.Name = NameValue[0];
                    objNameValue.Value = NameValue[1];

                    objNameValue.Value = RemoveString(objNameValue.Value, "/>");

                    lstNameValue.Add(objNameValue);
                }
                if (Param.Contains("name="))
                {
                    string[] NameValue = Param.Split('=');

                    NameValuePair objNameValue = new NameValuePair();

                    objNameValue.Name = NameValue[0];
                    objNameValue.Value = NameValue[1];

                    objNameValue.Value = RemoveString(objNameValue.Value, "/>");

                    lstNameValue.Add(objNameValue);
                }
            }

            foreach (NameValuePair Namevalue in lstNameValue)
            {
                Console.WriteLine("Name:{0} Value:{1}", Namevalue.Name, Namevalue.Value);
            }

        }

        private static int[] GetIndexsInString(string strInput, string SubString)
        {
            int[] Index = new int[2];

            if (strInput.Contains(SubString))
            {
                for (int startIndex = 0; startIndex < strInput.Length; startIndex++)
                {
                    if (strInput.Substring(startIndex, SubString.Length) == SubString)
                    {
                        Index[0] = startIndex;
                        Index[1] = startIndex + SubString.Length - 1;

                        break;
                    }
                }
            }

            return Index;
        }

        private static string RemoveString(string strInput, string RemoveString)
        {
            string strResult = strInput;

            int[] Index = new int[2];

            Index = GetIndexsInString(strInput, RemoveString);

            if (Index[0] != Index[1])
            {
                strResult = strInput.Remove(Index[0], (Index[1] - Index[0]) + 1);
            }

            return strResult;
        }
    }
}


这篇关于如何在不使用HTMLDocument的情况下从c#中的html字符串访问值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆