matches()
вернет true только в том случае, если полная строка соответствует. find()
попытается найти следующее вхождение в подстроке, которое соответствует регулярному выражению. Обратите внимание на акцент на «следующий». Это означает, что результат вызова find()
несколько раз может быть не таким. Кроме того, с помощью find()
вы можете вызвать start()
, чтобы вернуть позицию, подстроенную подстрокой.
final Matcher subMatcher = Pattern.compile("\\d+").matcher("skrf35kesruytfkwu4ty7sdfs");
System.out.println("Found: " + subMatcher.matches());
System.out.println("Found: " + subMatcher.find() + " - position " + subMatcher.start());
System.out.println("Found: " + subMatcher.find() + " - position " + subMatcher.start());
System.out.println("Found: " + subMatcher.find() + " - position " + subMatcher.start());
System.out.println("Found: " + subMatcher.find());
System.out.println("Found: " + subMatcher.find());
System.out.println("Matched: " + subMatcher.matches());
System.out.println("-----------");
final Matcher fullMatcher = Pattern.compile("^\\w+$").matcher("skrf35kesruytfkwu4ty7sdfs");
System.out.println("Found: " + fullMatcher.find() + " - position " + fullMatcher.start());
System.out.println("Found: " + fullMatcher.find());
System.out.println("Found: " + fullMatcher.find());
System.out.println("Matched: " + fullMatcher.matches());
System.out.println("Matched: " + fullMatcher.matches());
System.out.println("Matched: " + fullMatcher.matches());
System.out.println("Matched: " + fullMatcher.matches());
Будет выводиться:
Found: false Found: true - position 4 Found: true - position 17 Found: true - position 20 Found: false Found: false Matched: false ----------- Found: true - position 0 Found: false Found: false Matched: true Matched: true Matched: true Matched: true
Итак, будьте осторожны при многократном вызове find()
, если объект Matcher
не был сброшен, даже когда регулярное выражение окружено с ^
и $
, чтобы соответствовать полной строке.
Это должно добиться цели
Dim jsonSerialiser As New System.Web.Script.Serialization.JavaScriptSerializer
Dim jsonString as String = jsonSerialiser.Serialize(yourObject)
Я думаю, что Вы ищете, этот класс:
System.ServiceModel.Web.DataContractJsonSerializer
Вот пример от Rick Strahl: DataContractJsonSerializer в.NET 3.5
Так как класс JavaScriptSerializer технически удерживается от использования, я полагаю, что DataContractJsonSerializer является предпочтительным способом пойти, если Вы используете 3.0 +.
Ну, я в настоящее время использую следующие дополнительные методы, чтобы сериализировать и десериализовать объекты:
using System.Web.Script.Serialization;
public static string ToJSON(this object objectToSerialize)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
return jss.Serialize(objectToSerialize);
}
/// <typeparam name="T">The type we are deserializing the JSON to.</typeparam>
public static T FromJSON<T>(this string json)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
return jss.Deserialize<T>(json);
}
Я использую это вполне немного - быть предупрежденным, эта реализация немного наивна (т.е. существуют некоторые потенциальные проблемы с нею, в зависимости от того, что Вы сериализируете и как Вы используете ее на клиенте, особенно с DateTimes).
В Системе. Сеть. Блок расширений, версия 3.5.0.0, существует класс JavaScriptSerializer, который должен обработать то, что Вы хотите.
Попробовать
System.Web.Script.Serialization.JavaScriptSerializer
или Выезд, JSON.org там является целым списком библиотек, записанных, чтобы сделать точно, что Вы хотите.