c# - 以 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++;
}
}
}
}
解决方案
推荐阅读
- flutter - 如何为图像添加透明度
- php - 如何通过表行而不是php中的列来回显多维数组值
- javascript - 在 javascript 中查找添加到 JSON 对象的项目
- android - 在按钮周围创建一个白框
- javascript - 如何从检查数组中返回匹配的对象元素的索引
- node.js - 我想更新 mongodb 中嵌套数组中的字段
- c# - 使用 C# 反序列化 XML 文件,其中元素具有属性和值
- highcharts - 从 highstocks 日期范围获取日期范围
- python - 为什么这两个列表相等,但在操作时表现不同?
- typescript - 通过字符串属性名称对属性进行打字稿类型安全更新