簡體   English   中英

從字符串中提取文本,連字符和數字

[英]Extract text, hyphen and number from string

在工作中,我們使用非常古老的全球分銷系統進行預訂,當我們取消預訂時,我們會從其網絡服務中獲得答復,告知您預訂是否已成功取消。

響應中包含一個布爾值,用於說明是否被取消,以及帶有其他任何信息(例如,取消引用或為什么無法取消等)的字符串。

如果取消成功,則取消引用會綁在響應中字符串的中間,看起來像這樣

"NXT REPLACES  1  REDISPLAY ITINERARY1CXL-13113654 THANK YOU FOR YOUR INTEREST"

從這個字符串中,我需要提取“ CXL-13113654” ...

基本上是CXL,后跟“-”,然后是任何字符,但不包括“”

我已經搜索過Google大學,而我所能找到的一切似乎都只是在提取數字,字符或符號,而從未提取像我這樣的固定格式內的混合形式。

有人可以幫忙嗎?

如何才能做到這一點?

正則表達式模式:

System.Text.RegularExpressions.Regex.Match(inputString, @"(?<match>CXL\-[^\s]+)").Groups["match"].Value

假設它是單行搜索...您將需要這樣的正則表達式...。

(?<Anything>[^CXL[\s]*\-[\s]*[^\s]+)

這將查找CXL,后跟任意數量的空格(0或更多),然后是連字符,然后是0或更多的空格,然后匹配所有非空格。 所有這些都將放入名為“ Anything”的組中。 如果願意,可以在此頁上進行測試

C#為此將是...

// -- in using statements add this
using System.Text.RegularExpressions;

// -- in your code add something like this

var inputString = "NXT REPLACES  1  REDISPLAY ITINERARY1CXL-13113654 THANK YOU FOR YOUR INTEREST";
var match = Regex.Match(inputString, @"(?<Anything>CXL[\s]*\-[\s]*[^\s]+) ");
if(match.success && match.Groups["Anything"].Success)
{
  var anything = match.Groups["Anything"].Value;
  // -- do something with anything
}
using System;
using System.Text.RegularExpressions;

class Program
{
    public static void Main()
    {
        var input = "NXT REPLACES 1 REDISPLAY ITINERARY1CXL-13113654 THANK YOU FOR YOUR INTEREST";
        var match = Regex.Match(input, @"CXL\-(?<number>\d+)\s+");
        if (match.Success)
        {
            Console.WriteLine(match.Groups["number"]);
        }
    }
}

印刷品:

13113654

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM