PyPDF2 в некоторых случаях игнорирует пробелы и делает текст результата беспорядочным, но я использую PyMuPDF, и я действительно доволен, что вы можете использовать эту ссылку для получения дополнительной информации
Обновите 8 лет спустя (ничего себе!) для покрытия c# 6's пустой условный оператор :
var value = maybeNull?.ToString() ?? String.Empty;
Другие подходы:
object defaultValue = "default";
attribs.something = (entry.Properties["something"].Value ?? defaultValue).ToString()
я также использовал это, которое не ужасно умно, но удобно:
public static string ToSafeString(this object obj)
{
return (obj ?? string.Empty).ToString();
}
При предназначении для Платформы.NET 3.5 самым изящным решением был бы дополнительный метод, по-моему.
public static class ObjectExtensions
{
public static string NullSafeToString(this object obj)
{
return obj != null ? obj.ToString() : String.Empty;
}
}
Затем для использования:
attribs.something = entry.Properties["something"].Value.NullSafeToString();
Как изменение к ответу RexM:
attribs.something = (entry.Properties["something"].Value ?? attribs.something).ToString()
единственный недостаток был бы то, что attribs.something присвоят значение (само в этом примере) даже если запись. Свойства ["что-то"].Value был пустым - который мог быть дорогим, если бы .something свойство сделало некоторую другую обработку и/или эту строку, выполняется много (как в цикле).
Чтобы сделать точно, что Вы пытаетесь сделать, вспомогательный метод может всегда использоваться:
CopyIfNotNull(entry.Properties["something"].Value, out attribs.something);
void CopyIfNotNull(string src, out string dest)
{
if(src != null)
dest = src;
}
Как насчет того, чтобы использовать вспомогательный метод как это:
attribs.something = getString(
entry.Properties["something"].Value,
attribs.something);
static String getString(
Object obj,
String defaultString)
{
if (obj == null) return defaultString;
return obj.ToString();
}
, С другой стороны, Вы могли использовать ??
оператор:
attribs.something =
(entry.Properties["something"].Value ?? attribs.something).ToString();
(отмечают избыточное ToString()
вызов, когда значение null
)
Разве вы не можете сделать:
attribs.something = entry.Properties["something"].Value as string;