我有一个字符串,我想提取字符串中的(唯一)数字序列.
示例:helloThisIsA1234Sample.我想要1234
这是一个给定的数字序列只在字符串中出现一次但不在同一位置.
(对于那些会问的人,我有一个服务器名称,需要在其中提取一个特定的数字)
我想使用Apache commomns中的StringUtils类.
谢谢!
在Java 8中,我有一些String值,我想以逗号分隔的有效值列表结束.如果String为null或为空,我想忽略它.我知道这似乎很常见,很像这个老问题 ; 但是,该讨论没有解决空值和空格(我也不喜欢接受的答案).
我看过Java 8 StringJoiner,commons StringUtils(join)和trusty guava(Joiner),但似乎没有一个完整的解决方案.愿景:
where: val1="a", val2=null, val3="", val4="b"
String niceString = StringJoiner.use(",").ignoreBlanks().ignoreNulls()
.add(val1).add(val2).add(val3).add(val4).toString();
Run Code Online (Sandbox Code Playgroud)
会导致niceString ="a,b"
是不是有一个很好的方法来做到这一点(不涉及循环,将字符串加载到列表中,和/或正则表达式替换以删除错误的条目)?
嗨,我有我需要转换的要求List的Long数据类型,以逗号分隔String.这将是适当的方式.我已经考虑过使用字符串构建器或将其转换为List<String>然后使用StringUtilsjoin来获取String.
我正在寻找java 7解决方案,不使用guava或java 8.
我有一个字符串,它来自xml,它是德语文本.特定于德语的字符通过UTF-8格式进行编码.在显示我需要解码它的字符串之前.
我尝试过以下方法:
try {
BufferedReader in = new BufferedReader(
new InputStreamReader(
new ByteArrayInputStream(nodevalue.getBytes()), "UTF8"));
event.attributes.put("title", in.readLine());
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我也试过这个:
try {
event.attributes.put("title", URLDecoder.decode(nodevalue, "UTF-8"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
他们都没有工作.如何解码德语字符串
先感谢您.
UDPDATE:
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
super.characters(ch, start, length); …Run Code Online (Sandbox Code Playgroud) 有XXXUtils我可以做的地方
String s = XXXUtils.join(aList, "name", ",");
Run Code Online (Sandbox Code Playgroud)
哪个"name"是来自对象的JavaBeans属性aList.
我发现只有StringUtils具有join的方法,但它只是一个变换List<String>成一个分离String.
就像是
StringUtils.join(BeanUtils.getArrayProperty(aList, "name"), ",")
Run Code Online (Sandbox Code Playgroud)
这很快,值得使用.BeanUtils会抛出2个已检查的异常,所以我不喜欢它.
java apache-commons separator apache-stringutils apache-commons-collection
当我尝试
StringUtils.join(myList,',');
Run Code Online (Sandbox Code Playgroud)
我得到编译失败:
cannot find symbol
symbol : method join(java.util.List,char)
Run Code Online (Sandbox Code Playgroud)
但以下工作:
StringUtils.join(myList.toArray(),',');
Run Code Online (Sandbox Code Playgroud)
该文档(阿帕奇共享郎2.5)似乎表明,两者都应该工作,因为它们都记录:
public static String join(Collection collection,
char separator)
Run Code Online (Sandbox Code Playgroud)
和
public static String join(Object[] array,
char separator)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?为了记录,我正在进口import org.apache.commons.lang.StringUtils;
有方便的方法StringUtils.capitalize()在apache-commons-lang库中.但我找不到成对逆方法,它会使单词中的第一个字母为小写.这种方法存在吗?
我正在阅读commons.apache.org isNumeric方法定义,它指出:
StringUtils.isNumeric("???") = true;
Run Code Online (Sandbox Code Playgroud)
我不确定为什么"???"被认为是数字.我的猜测是:
"?"被认为是unicode数字我需要转义字符以避免 XSS。我正在使用 org.apache.commons.lang.StringEscapeUtils.escapeHtml(String str),它通过以下方式提供帮助:
原始输入
" onmouseover=alert() src="
Run Code Online (Sandbox Code Playgroud)
转义 HTML 后变成
" onmouseover=alert() src="
Run Code Online (Sandbox Code Playgroud)
但是,在某些情况下,反射的输入会被单引号捕获,例如:
test'];}alert();if(true){//
Run Code Online (Sandbox Code Playgroud)
在这种特殊情况下,转义 HTML 不会产生任何效果。然而,org.apache.commons.lang.StringEscapeUtils 还有一个名为 escapeJavascript(String str) 的方法,它将输入转换为:
test\'];}alert();if(true){\/\/
Run Code Online (Sandbox Code Playgroud)
这里的问题是,你会先转义 HTML 然后转义 Javascript 来清理你的输入吗?另一种方法是手动用 \' 替换单引号字符。
任何帮助将不胜感激!
java ×9
android ×1
arraylist ×1
collections ×1
encoding ×1
guava ×1
java-8 ×1
javascript ×1
replace ×1
saxparser ×1
separator ×1
string ×1
string-utils ×1
xml-parsing ×1
xss ×1