Получить подстроку строки путем поиска строки для текста подстроки? - PullRequest
2 голосов
/ 26 мая 2011

Как бы вы получили подстроку строки, передав строку искомому тексту подстроки?Также вы сможете комбинировать регулярные выражения с обычным текстом, не вызывая проблем

Ответы [ 2 ]

4 голосов
/ 26 мая 2011

Если вы хотите узнать, существует ли подстрока в строке, вы можете использовать Содержит .Если вы хотите узнать положение подстроки в строке, вы можете использовать IndexOf (который также можно использовать, чтобы увидеть, существует ли он ... см. Примеры ниже).

Примеры дляпроверка существования подстроки:

bool subStringExists = yourStringVariable.Contains("yourSubString");
bool subStringExists = yourStringVariable.IndexOf("yourSubString") >= 0;

Примеры поиска позиции подстроки:

int subStringPosition = yourStringVariable.IndexOf("yourSubString");

ОБНОВЛЕНИЕ:

На основе вашего комментария о сопоставлении URL вы можете сделатьвсе это с выражением регулярного выражения.С помощью регулярных выражений некоторые части выражения могут быть буквальными, тогда как другие части являются переменными.В случае того, что вы пытаетесь сделать, у вас будет что-то вроде этого для вашего регулярного выражения:

// Will match on http://www.mywebsite.com/abc#.aspx, where # is 1 or more digits
const string regExCommand = "(http://www.mywebsite.com/abc\\d+\\.aspx)";

Вот полный рабочий пример, который вы можете скопировать в консольный проект и поэкспериментировать с ним, чтобы выяснить,именно то, что вам нужно:

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

namespace RegExExample
{
    public class Program
    {
        static void Main()
        {
            var urls = new List<Url>
            {
                new Url
                {
                    Name = "Match 1",
                    Address = "http://www.mywebsite.com/abc123.aspx"
                },
                new Url
                {
                    Name = "Match 2",
                    Address = "http://www.mywebsite.com/abc45.aspx"
                },
                new Url
                {
                    Name = "Match 3",
                    Address = "http://www.mywebsite.com/abc5678.aspx"
                },
                new Url
                {
                    Name = "No Match 1",
                    Address = "http://www.otherwebsite.com/abc123.aspx"
                    // No match because otherwebsite.com
                },
                new Url
                {
                    Name = "No Match 2",
                    Address = "http://www.mywebsite.com/def123.aspx"
                    // No match because def
                }
            };

            // Will match on http://www.mywebsite.com/abc#.aspx, where # is 1 or more digits
            const string regExCommand = "(http://www.mywebsite.com/abc\\d+\\.aspx)";

            var r = new Regex(regExCommand, RegexOptions.IgnoreCase | RegexOptions.Singleline);

            urls.ForEach(u =>
            {
                var m = r.Match(u.Address);
                if (m.Success)
                {
                    Console.WriteLine(String.Format("Name: {0}{1}Address: {2}{1}",
                                                    u.Name,
                                                    Environment.NewLine,
                                                    u.Address));
                }
            });

            Console.ReadLine();
        }
    }

    internal class Url
    {
        public string Name { get; set; }
        public string Address { get; set; }
    }
}

Вывод будет следующим:

Имя: совпадение 1
Адрес: http://www.mywebsite.com/abc123.aspx

Имя: совпадение 2
Адрес: http://www.mywebsite.com/abc45.aspx

Имя: Матч 3
Адрес: http://www.mywebsite.com/abc.5678.aspx

0 голосов
/ 26 мая 2011

Поскольку вы уже знаете подстроку, я предполагаю, что вы проверяете, содержит ли строка подстроку; Вы можете сделать

bool hasSubstring = str.Contains(subStr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...