- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
输入字符串:
Lorem ipsum tip. Lorem ipsum loprem ipsum septum #match this#, lorem ipsum #match this too#. #Do not match this because it is already after a period#.
期望的输出:
Lorem ipsum tip. #match this# #match this too# Lorem ipsum loprem ipsum septum, lorem ipsum. #Do not match this because it is already after a period#.
请注意,#match this# 和 #match this too# 均已移至最近的句点 (.) 旁边。基本上,## 中的所有内容都应移至左侧最近的句点。
RegEx 和 Java 字符串处理可以完成这个任务吗?
匹配#anything#的最基本的正则表达式是这样的:
\#(.*?)\#
除此之外我还遇到困难。
编辑:您不必告诉我如何编写完整的程序。我只需要一个足够的正则表达式解决方案,然后我将尝试自己的字符串操作。
这是我的解决方案,源自 glowcoder 的答案:
public static String computeForSlashline(String input) {
String[] sentences = input.split("\\.");
StringBuilder paragraph = new StringBuilder();
StringBuilder blocks = new StringBuilder();
Matcher m;
try {
// Loop through sentences, split by periods.
for (int i = 0; i < sentences.length; i++) {
// Find all the #____# blocks in this sentence
m = Pattern.compile("(\\#(.*?)\\#)").matcher(sentences[i]);
// Store all the #____# blocks in a single StringBuilder
while (m.find()) {
blocks.append(m.group(0));
}
// Place all the #____# blocks at the beginning of the sentence.
// Strip the old (redundant) #____# blocks from the sentence.
paragraph.append(blocks.toString() + " " + m.replaceAll("").trim() + ". ");
// Clear the #____# collection to make room for the next sentence.
blocks.setLength(0);
}
} catch(Exception e) { System.out.println(e); return null; }
// Make the paragraph look neat by adding line breaks after
// periods, question marks and #_____#.
m = Pattern.compile("(\\. |\\. |\\?|\\])").matcher(paragraph.toString());
return m.replaceAll("$1<br /><br />");
}
这给了我想要的输出。然而,有一个问题:如果 #__# 之间有一个句点(例如:#Mrs. Smith 在敏感点踢了 Smith 女士#),输入.split("\\.");
行将分解 #__#。因此,我将用 RegEx 替换 input.split()
行。
最佳答案
我将使用的骨架如下:
String computeForSlashline(String input) {
String[] sentences = input.split("\.");
for(int i = 0; i < sentences.length; i++) {
// perform a search on each sentence, moving the #__# to the front
}
StringBuilder sb = new StringBuilder();
for(String sentence : sentences) {
sb.append(sentence).append(". ");
}
return sb.toString().trim();
}
关于Java RegEx 乐趣 - 玩转句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7340864/
我真的无法在任何地方找到此信息。实际上,我找到了一个地方,每个 db 调用都在一个 js 脚本中。 有人可以澄清一下我是否应该运行这个: var config = { apiKey: "AAAPPPI
//编辑 我想在切换状态和返回状态后保存生命值、金币、乐趣值。 我创建了游戏对象/数组: game.yourGameData = {}; game.yourGameData.health = 100;
输入字符串: Lorem ipsum tip. Lorem ipsum loprem ipsum septum #match this#, lorem ipsum #match this too#.
假设我想创建一个动态库 dynamic.so,但我的代码引用了某个其他静态库 static.a 中存在的函数。自然地,如果我使用 g++ 和 -shared 选项进行编译和链接,dynamic.so
远程节点位于不同的机器上。 我从本地节点测试: $ erl -name foobar Erlang/OTP 17 [erts-6.2] [source] [64-bit] [smp:2:2] [asy
我正在对使用 NHibernate 实现持久性的类库进行单元测试。 NHibernate 正在使用 Sqlite 内存数据库进行测试。在正常情况下,很容易让 StructureMap 为我踢出一个 s
在我看来,私有(private)函数只能在类内部访问,但在我的示例中,以下代码 bindPreferenceSummaryToValue(findPreference("RestoreItem"))
mysql_query("INSERT INTO dictionary ('word', 'definition') VALUES ('".$word."','".$definition."');")
两者在执行上有什么区别吗? launch { function1() } fun function1(){ DoSomething... } 和 launch { functio
能否建议我如何处理多个 anchor 标记以实现点击功能? 我的代码是这样的: test1 test2 我的 jQuery 功能是: $('a').click(function(event) {
我是一名优秀的程序员,十分优秀!