68 lines
2.1 KiB
C#
68 lines
2.1 KiB
C#
namespace HutongGames.PlayMaker.Actions
|
|
{
|
|
[ActionCategory(ActionCategory.String)]
|
|
[Tooltip("Splits a string into substrings using separator characters.")]
|
|
public class StringSplit : FsmStateAction
|
|
{
|
|
[UIHint(UIHint.Variable)]
|
|
[Tooltip("String to split.")]
|
|
public FsmString stringToSplit;
|
|
|
|
[Tooltip("Characters used to split the string.\nUse '\\n' for newline\nUse '\\t' for tab")]
|
|
public FsmString separators;
|
|
|
|
[Tooltip("Remove all leading and trailing white-space characters from each separated string.")]
|
|
public FsmBool trimStrings;
|
|
|
|
[Tooltip("Optional characters used to trim each separated string.")]
|
|
public FsmString trimChars;
|
|
|
|
[UIHint(UIHint.Variable)]
|
|
[ArrayEditor(VariableType.String)]
|
|
[Tooltip("Store the split strings in a String Array.")]
|
|
public FsmArray stringArray;
|
|
|
|
public override void Reset()
|
|
{
|
|
stringToSplit = null;
|
|
separators = null;
|
|
trimStrings = false;
|
|
trimChars = null;
|
|
stringArray = null;
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
var trimCharsArray = trimChars.Value.ToCharArray();
|
|
|
|
if (!stringToSplit.IsNone && !stringArray.IsNone)
|
|
{
|
|
stringArray.Values = stringToSplit.Value.Split(separators.Value.ToCharArray());
|
|
if (trimStrings.Value)
|
|
{
|
|
for (var i = 0; i < stringArray.Values.Length; i++)
|
|
{
|
|
var s = stringArray.Values[i] as string;
|
|
if (s == null) continue;
|
|
if (!trimChars.IsNone && trimCharsArray.Length > 0)
|
|
{
|
|
stringArray.Set(i, s.Trim(trimCharsArray));
|
|
}
|
|
else
|
|
{
|
|
stringArray.Set(i, s.Trim());
|
|
}
|
|
}
|
|
|
|
}
|
|
stringArray.SaveChanges();
|
|
}
|
|
|
|
Finish();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|