Tag: 字符串

如何查找给定文本中给定单词的所有排列?

这是一个面试问题(电话屏幕):编写一个函数(用Java)来查找给定文本中出现的给定单词的所有排列。 例如,对于单词abc和text abcxyaxbcayxycab该函数应返回abc, bca, cab abcxyaxbcayxycab abc, bca, cab 。 我会回答这个问题如下: 显然,我可以遍历给定单词的所有排列并使用标准substring函数。 但是(现在对我来说)编写代码以生成所有单词排列可能很困难。 循环遍历单词大小的所有文本子字符串,对每个子字符串进行排序并将其与“已排序”的给定单词进行比较更容易。 我可以立即编写这样的函数。 我可以修改一些子串搜索算法,但我现在不记得这些算法了。 你会如何回答这个问题?

包含阿拉伯语和西方字符的字符串连接

我正在尝试连接几个包含阿拉伯语和西方字符的字符串(混合在同一个字符串中)。 问题是结果是一个字符串,它很可能在语义上正确,但与我想要获得的字符串不同,因为Unicode双向算法改变了字符的顺序。 基本上,我只是想连接好像它们都是LTR一样,忽略了一些事实是RTL,这是一种“不可知”的连接。 我不确定我的解释是否清楚,但我认为我不能做得更好。 希望可以有人帮帮我。 亲切的问候, 卡洛斯费雷拉 顺便说一句,字符串是从数据库中获得的。 编辑 前2个字符串是我要连接的字符串,第三个是结果。 编辑2 实际上,连接的字符串与图像中的字符串略有不同,它在复制+粘贴期间被改变,1在第一个A之后而不是在第二个A之前。

如何在Java中转义字符串?

我正在阅读Java中的源文件,但是当我打印它(sysout)时,转义的字符不再被转义。 如何在Java中转义字符串中的\n和\t字符?

Java String.split()有时会给出空字符串

我正在制作一个基于文本的骰子滚筒。 它接受像“2d10 + 5”这样的字符串,并且作为滚动的结果返回一个字符串。 我的问题出现在tokenizer中,它将字符串拆分为有用的部分,以便我解析信息。 String[] tokens = message.split(“(?=[dk\\+\\-])”); 这产生了奇怪的,意想不到的结果。 我不知道究竟是什么导致了他们。 它可能是正则表达式,我的误解,或Java只是Java。 这是发生了什么: 3d6+4产生字符串数组[3, d6, +4] 。 这是对的。 d%产生字符串数组[d%] 。 这是对的。 d20产生字符串数组[d20] 。 这是对的。 d%+3产生字符串数组[, d%, +3] 。 这是不正确的。 d20+2产生字符串数组[, d20, +2] 。 这是不正确的。 在第四个和第五个例子中,一些奇怪的东西导致额外的空字符串出现在数组的前面。 这并不是字符串前面缺少数字,因为其他例子反驳了这一点。 这不是百分号的存在,也不是加号。 现在我只是继续通过空白字符串的for循环,但这感觉就像一个创可贴解决方案。 有没有人知道是什么原因造成arrays前面的空白字符串? 我该如何解决?

以这种格式从字符串解析日期:dd / MM / yyyy

我想在Java中用这种格式解析String的最佳方法是dd / MM / yyyy [到dd / MM / yyyy]。 带[]的字符串是可选的,dd代表日期的2位数表示,MM是月份的2位数表示,yyyy是年份的4位数表示。 更新 谢谢大家的快速响应,但我忘了告诉你[]是象征可选,字符串中没有[]可能是一个示例字符串 22/01/2010 2010年1月22日至23/01/2010 空值 目前我用这种方式编写代码,工作但很难看=( String _daterange = (String) request.getParameter(“daterange”); Date startDate = null, endDate = null; // Format of incoming dateRange is if (InputValidator.requiredValidator(_daterange)) { String[] _dateRanges = _daterange.toUpperCase().split(“TO”); try { startDate = (_dateRanges.length > 0) ? sdf.parse(_dateRanges[0]) : null; try{ endDate […]

如何在包含dot的java中替换String?

我需要替换包含空格和句点的String。 我尝试过以下代码: String customerName = “Mr. Raj Kumar”; customerName = customerName.replaceAll(” “, “”); System.out.println(“customerName”+customerName); customerName = customerName.replaceAll(“.”, “”); System.out.println(“customerName”+customerName); 但这会导致: customerName Mr.RajKumar 和 顾客姓名 我从第一个SOP获得了正确的客户名称,但是从第二个SOP我没有得到任何价值。

用Java加入字符串集合的首选成语

给定一个字符串集合,如何在不使用外部库的情况下将它们加入普通Java中? 鉴于以下变量: Collection data = Arrays.asList(“Snap”, “Crackle”, “Pop”); String separator = “, “; String joined; // let’s create this, shall we? 这就是我在Guava中的表现 : joined = Joiner.on(separator).join(data); 在Apache Commons / Lang中 : joined = StringUtils.join(data, separator); 但是在简单的Java中,真的没有比这更好的方法吗? StringBuilder sb = new StringBuilder(); for(String item : data){ if(sb.length()>0)sb.append(separator); sb.append(item); } joined = sb.toString();

为什么不替换这行代码中的所有工作?

String weatherLocation = weatherLoc[1].toString(); weatherLocation.replaceAll(“how”,””); weatherLocation.replaceAll(“weather”, “”); weatherLocation.replaceAll(“like”, “”); weatherLocation.replaceAll(“in”, “”); weatherLocation.replaceAll(“at”, “”); weatherLocation.replaceAll(“around”, “”); test.setText(weatherLocation); weatherLocation仍然包含“喜欢”

Java中的toUpperCase不起作用

我有一个字符串: String c = “IceCream”; 如果我使用toUpperCase()函数然后它返回相同的字符串,但我想得到”ICECREAM” 。 哪里有问题?

将String评估为条件Java

我必须从D / B中检索一组列值并将其作为条件进行检查。 例如,我会在D / B列中使用”value > 2″ , “4 < value < 6"等字符串。 (值是一直比较的值)。 我将在我的代码中声明一个变量值,我应该评估这个条件。 int value = getValue(); if (value > 2) //(the string retrieved from the D/B) doSomething(); 我怎样才能做到这一点?? 任何帮助都是值得赞赏的。 谢谢。