2013-04-27 2 views
9

Javaプロパティファイルでハッシュ記号(#)をエスケープするにはどうすればよいですか。Javaプロパティ:#(ハッシュ)をエスケープする方法

Javaプロパティファイルを使用する国際化フレームワークがあります。

numberという列があり、そのヘッダーを#にします。これは...

number=# 

...は動作しません。

+0

javaなので、コードではハッシュ( '#')を '\\#'に置き換える必要があります。ダブルスラッシュに注意してください。あるいは、 '#'を '\\ u0023'に置き換えることもできます。 – Sabin

答えて

-1

Javaのデフォルトのエスケープ文字は、'\'でハッシュをエスケープしようとしています。

+9

答えに* try *を使うのは、**悪い習慣です**。あなたは*知っている*と自信を持って答えている、*または*コメントとして投稿したり、まったく回答しないでください。 – skuntsel

+0

それは実際には悪い処方です。そのために残念。 – DmiN

6

この1つは任意のエスケープ文字なしで動作するはずです:

number=# 

は、単にコードを使用して小さなテストをした....

prop.load(new FileInputStream ("./res/app.properties")); 
System.out.println("Property: " +prop.getProperty("Number")); 

...とプロパティファイル(大文字/小文字に注意してください。 ):

Number=# 
Text=test 

結果:

Property: # 

あなたのスペルや大文字/小文字を確認してください。

thisまたはthat one(Javaドキュメントもリンクしています)をご覧ください。

p.s.:必須ではありませんが、Unicodeシーケンス:\u0023を試すこともできます。

乾杯!

0

次のような場合(動作しません)に適切にエスケープする方法を探すとき、私はこの質問を見つけた:それはエスケープ必要この場合

zendesk.ticket.subject.prefix=#{{ticket.id}}

、そうでない場合は、次の例外が発生します。

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'createTicketService' defined in file [/Users/***]: Unsatisfied dependency expressed through constructor parameter 6; nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'ticket' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public? at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:189) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1193) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1095) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) ... 64 common frames omitted Caused by: org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'ticket' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public? at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:164) at org.springframework.beans.factory.support.AbstractBeanFactory.evaluateBeanDefinitionString(AbstractBeanFactory.java:1448) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1088) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) ... 78 common frames omitted Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'ticket' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public? at org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:226) at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:94) at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:81) at org.springframework.expression.spel.ast.CompoundExpression.getValueRef(CompoundExpression.java:51) at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:87) at org.springframework.expression.spel.ast.SpelNodeImpl.getValue(SpelNodeImpl.java:120) at org.springframework.expression.spel.ast.InlineList.getValueInternal(InlineList.java:95) at org.springframework.expression.spel.ast.SpelNodeImpl.getTypedValue(SpelNodeImpl.java:131) at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:297) at org.springframework.expression.common.CompositeStringExpression.getValue(CompositeStringExpression.java:105) at org.springframework.expression.common.CompositeStringExpression.getValue(CompositeStringExpression.java:42) at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:161) ... 83 common frames omitted

ザ/溶液(WORKS)#{'#'}端結果で使用することであろう。

zendesk.ticket.subject.prefix=#{'#'}{{ticket.id}}

関連する問題