我想知道如何將字串格式的值分成兩部分。在我的 asp 應用程式中,我將字串值從視圖決議到控制器。
然后我想將整個值分成兩部分。
例如:大多數情況下,兩個字母的值可能是 TEXT 值(如 "PO" 、 "SS" 、 "GS" ),其余的都是數字 (SS235452)。
數字的長度不能宣告,因為它是隨機生成的。所以想從字串值的開頭拆分它。需要幫助。
我目前的代碼是
string approvalnumber = approvalCheck.ApprovalNumber.ToUpper();
謝謝。
uj5u.com熱心網友回復:
正如您已經提到的,第一部分將有 2 個字母,只有第二部分是變化的,您可以使用字串的子字串方法,如下所示。
var textPart = input.Substring(0,2);
var numPart = input.Substring(2);
第一行從起始索引 0 獲取 2 個字符,第二條陳述句從索引 2 獲取所有字符。如果需要,您可以將第二部分轉換為數字。
請注意,第二行沒有提到 Substring 的第二個引數。此引數用于長度,如果未提及任何內容,它將獲取到字串末尾。
uj5u.com熱心網友回復:
您可以嘗試使用正則運算式從字串中提取字母、數字。
這個 javascript 函式只回傳輸入字串中的數字。
function getNumbers(input) {
return input.match(/[0-9] /g);
}
uj5u.com熱心網友回復:
我會使用正則運算式。考慮到您指出 ASP-NET-4 的事實,我假設您不能使用元組out var等,所以它會如下:
using System.Text.RegularExpressions;
using FluentAssertions;
using Xunit;
namespace Playground
{
public class Playground
{
public struct ProjectCodeMatch
{
public string Code { get; set; }
public int? Number { get; set; }
}
[Theory]
[InlineData("ABCDEFG123", "ABCDEFG", 123)]
[InlineData("123456", "", 123456)]
[InlineData("ABCDEFG", "ABCDEFG", null)]
[InlineData("ab123", "AB", 123)]
public void Split_Works(string input, string expectedCode, int? expectedNumber)
{
ProjectCodeMatch result;
var didParse = TryParse(input, out result);
didParse.Should().BeTrue();
result.Code.Should().Be(expectedCode);
result.Number.Should().Be(expectedNumber);
}
private static bool TryParse(string input, out ProjectCodeMatch result)
{
/*
* A word on this RegExp:
* ^ - the match must happen at the beginning of the string (nothing before that)
* (?<Code>[a-zA-Z] ) - grab any number of letters and name this part the "Code" group
* (?<Number>\d ) - grab any number of numbers and name this part the Number group
* {0,1} this group must occur at most 1 time
* $ - the match must end at the end of the string (nothing after that)
*/
var regex = new Regex(@"^(?<Code>[a-zA-Z] ){0,1}(?<Number>\d ){0,1}$");
var match = regex.Match(input);
if (!match.Success)
{
result = default;
return false;
}
int number;
var isNumber = int.TryParse(match.Groups["Number"].Value, out number);
result = new ProjectCodeMatch
{
Code = match.Groups["Code"].Value.ToUpper(),
Number = isNumber ? number : null
};
return true;
}
}
}
uj5u.com熱心網友回復:
一個 linq 答案:
string d = "PO1232131";
string.Join("",d.TakeWhile(a => Char.IsLetter(a)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/353656.html
標籤:C# asp.net-mvc asp.net-mvc-4
