Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Если вы хотите найти все слова, вы можете использовать это регулярное выражение.
(?<=\s?)[%$]\w+(?=\s?)
Итак, в Shipments will cost $150USD, which representes a rise of %34.
он найдет $150USD
и %34
.
Код C #:
String subjectString = "Shipments will cost $150USD, which representes a rise of %34.";
var matches = Regex.Matches(subjectString, @"(?<=\s?)[%$]\w+(?=\s?)");
foreach (Match match in matches)
{
var value = match.Value;
}
Проще всего это:
string s = "Shipments will cost $150USD , which representes a rise of %34 .";
var matches = Regex.Matches(s, @"(\$|%)\w+");
for (int i = 0; i < matches.Count; i++)
{
Console.WriteLine(matches[i].Value);
}
Matches
, поскольку вам нужны все совпадения, а не только первые. – Szymon 9 March 2014 в 11:15