我试图在字符串中找到一个特定的值,然后检查值后面的字符。
我得到了第一部分,可以找到我需要的值,但我想检查每一个值后,我发现它前面的字符串中的十个字符中是否有任何一个是数字。
这是我到目前为止得到的第一部分:
public class Text_Value : MonoBehaviour
{
[SerializeField]
private TMP_Text Text;
public List<string> Values = new List<string>();
private int ChestCircumference;
private int BodyHeight;
private int HighHipCircumference;
private int BellyCircumference;
private int CharacterIndex = 0;
// Start is called before the first frame update
void Start()
{
StartCoroutine(GetValues());
}
// Update is called once per frame
void Update()
{
}
IEnumerator GetValues()
{
if (Text.text == "No Data")
{
yield return new WaitForSeconds(0.1f);
Debug.Log("Text Value Finder: Wating For Text Data");
StartCoroutine(GetValues());
}
else if (Text.text != "No Data")
{
foreach (string value in Values)
{
if (Text.text.Contains(value))
{
Debug.Log("Value Found: " + value);
}
else if (!Text.text.Contains(value))
{
Debug.Log("Missing Value: " + value);
}
}
}
}
}
我想我需要在Foreach循环中使用一个循环,它将遍历接下来的十个字符,但不确定如何做到这一点。
字符串的一个示例是:
“领围”:39.102776,“颈底围”:42.982479”
如上所述,您可以使用Regex。匹配
等。
var matches = Regex.Matches(Text.text, "\"(.*?)\":(.*?)(?=,|$)");
foreach(var match in matches)
{
var key = match.Groups(1);
var valueString = match.Groups(2);
if(float.TryParse(valueString, out var value)
{
Debug.Log($"Found match for {key} with value = {value}");
}
}
参见Regex示例和解释