-2

私はこのような値を持っていますab48/2012。この文字列から数字を抽出する方法は? 48ある変数と2012別の変数に格納する必要があります。

部分文字列関数を使用せずに数値を抽出することは可能ですか? 可能であれば、私を助けてください。

私はこのように試しました

string Value = "ab48/2012";
string[] array = value.Split('/');
int Value1 = Convert.ToInt32(array[0].Substring(2));
int Value2 = Convert.ToInt32(array[1].ToString());
4

8 に答える 8

2

これはどう?

int[] numbers = Regex.Split(Value, @"\D+")
                .Where(x => x.Length > 0)
                .Select(int.Parse)
                .ToArray();

注: これは、負の数または小数点以下の桁数を処理しません。

于 2013-07-02T09:03:59.513 に答える
1
string[] parts = "abc48/2012".Split('/');
int value1 = Int32.Parse(new String(parts[0].Where(Char.IsDigit).ToArray()));
int value2 = Int32.Parse(parts[1]);

この種のコードを頻繁に使用している場合は、ユーティリティ拡張メソッドを導入できます。

public static string GetIntegersOnly(this string str)
{
    return new String(str.Where(Char.IsDigit).ToArray());
}
...
int value1 = Int32.Parse(parts[0].GetIntegersOnly())
于 2013-07-02T09:00:40.643 に答える
1
var input = "ab48/2012";
var regex = new Regex(@"^[^\d]*(?<a>\d*?)/(?<b>\d*)$");
var m = regex.Match(input);
if(m.Success)
{
    var a = m.Groups["a"].Value;
    var b = m.Groups["b"].Value;
    var aVal = int.Parse(a);
    var bVal = int.Parse(b);
}
于 2013-07-02T09:03:05.410 に答える
0

以下のコードを試してください

var str = "ab48/2012";
            var strArr = string.Join("", str.Skip(2)).Split('/');
            Console.WriteLine(strArr[0]);
            Console.WriteLine(strArr[1]);
于 2013-07-02T09:04:23.807 に答える
0

正規表現を使用できます

var result = System.Text.RegularExpressions.Regex.Matches("abc48/2012", "[0-9]+", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
            foreach(var val in result){
                var temp_variable = val;
            }
于 2013-07-02T09:01:27.610 に答える
0

Regex fuはどうですか?

int value1, value2;
var match = Regex.Match(value, @"^[^\d]*(?<value1>[\d]+)/(?<value2>[\d]+)");
if (match.Success)
{
    value1 = int.Parse(match.Groups["value1"].Value);
    value2 = int.Parse(match.Groups["value2"].Value);
}
于 2013-07-02T09:05:28.537 に答える
0

多分:

string[] tokens = "ab48/2012".Split('/');
int num = int.Parse(new string(tokens.First().Where(Char.IsDigit).ToArray()));
int year = int.Parse(tokens.Last());

デモ

Substringしかし、一般的に、私はあなたの留保が非常に効率的であることを理解していません.

于 2013-07-02T09:02:05.977 に答える
0

あなたは次のようにすることができます:

string value = "ab48/2012";
var charArray = value.ToCharArray().
           Reverse().TakeWhile(c=>char.IsDigit(c)).Reverse().ToArray();
var resultString = new string(charArray);
  • 文字配列を作成する
  • 逆にする
  • 最初の NOT 桁までのすべての文字を取得します
  • 逆戻り
  • 文字配列に渡す
  • その配列から新しい文字列を作成します
于 2013-07-02T09:02:58.870 に答える