首页 > 解决方案 > 以 DD-MM-YYYY 格式输入字段日期

问题描述

我正在使用正则表达式自动将日期转换为 DD-MM-YYYY 格式的输入字段。它可以按我的意愿工作,但问题是光标在第一个“-”之后移动了 1 个字符。我必须手动将光标向前移动 1 步,然后再次开始输入。我希望光标出现在文本的末尾。为什么会发生这种情况以及如何解决?

using System.Collections;
using UnityEngine;
using UnityEngine.UI; // Required when Using UI elements.
using System.Text.RegularExpressions;
using TMPro;

public class InputDateMask : MonoBehaviour {
    public TMP_InputField inputField;

    private void Awake () {
        inputField.onValueChanged.AddListener (delegate { OnValueChanged (); });
    }

    public void OnValueChanged () {
        if (string.IsNullOrEmpty (inputField.text)) {
            inputField.text = string.Empty;
        } else {
            string input = inputField.text;
            string MatchPattern = @"^((\d{2}-){0,2}(\d{1,2})?)$";
            string ReplacementPattern = "$1-$3";
            string ToReplacePattern = @"((\.?\d{2})+)(\d)";

            input = Regex.Replace (input, ToReplacePattern, ReplacementPattern);
            Match result = Regex.Match (input, MatchPattern);
            if (result.Success) {
                inputField.text = input;
                inputField.caretPosition++;
            }
        }
    }
}

标签: c#datetimeunity3d

解决方案


推荐阅读