我正在尝试从字符串中修剪前导空格,并且我不知道我的方法有什么问题,任何建议将不胜感激?
代码:this.poNumber = poNumber.equals("") ? poNumber : poNumber.trim();
我正在从csv文件中读取poNumber为“IG078565和IG083060”,并且输出也获得相同的空白值,不确定为什么吗?
更新了
添加完整的方法以获得更好的上下文:
public BillingDTO(String currency, String migrationId, String chargeId, String priceId, String poNumber, String otc,
String billingClassId, String laborOnly) {
super();
this.currency = currency.equals("") ? currency : currency.trim();
this.migrationId = migrationId.equals("") ? migrationId : migrationId.trim();
this.chargeId = chargeId.equals("") ? chargeId : chargeId.trim();
this.priceId = priceId.equals("") ? priceId : priceId.trim();
this.poNumber = poNumber.equals("") ? poNumber : poNumber.trim();
//poNumber.trim();
//System.out.println("poNumber:"+this.poNumber.trim());
//this.poNumber = poNumber.equals("") ? poNumber : poNumber.trim();
this.otc = otc.equals("") ? otc : otc.trim();
this.billingClassId = billingClassId.equals("") ? billingClassId : billingClassId.trim();
this.laborOnly = laborOnly.equals("") ? "N" : laborOnly;
}
谢谢。
最佳答案
更新看来您的空格不是空格(ascii = 32)。您的代码为160,这是一个不间断的空格。 trim()
不处理它。因此,您必须执行以下操作:
this.poNumber = poNumber.replace(String.valueOf((char) 160), " ").trim();
您最好创建一个实用程序-
YourStringUtils.trim(string)
,然后执行两个操作-.trim()
和replace(..)
原答案:
只需使用
this.poNumber = poNumber.trim();
如果
poNumber
可能是null
,则可以使用commons-lang中的空安全this.poNumber = StringUtils.trim(poNumber);
。如果要将
trimToEmpty(..)
转换为空字符串,也可以使用同一类的null
。如果您不想依赖commons-lang,则只需添加一个if子句:
if (poNumber != null) {
this.poNumber = poNumber.trim();
}
如问题下的注释中所述-确保修剪后检查正确的变量。您应该检查实例变量。因为字符串是不可变的,所以您的参数(或本地变量,我不能说)不会改变。