我有一个用户输入的长字符串。使用javascript我想得到第一句的文本,如果它以问号结束。有一种简单的方法可以做到这一点吗?
例如:
var myText1 = "What is your name? My name is Michelle."
我需要回复:“你叫什么名字”
var myText2 = "this is a test. this is a test."
我需要回复:“不适用”
答案 0 :(得分:2)
正规救援:
var res = str.match(/^([^.]+)\?/);
var output = (res == null) ? 'n/a' : res[1];
答案 1 :(得分:0)
我很担心这会有多实用,但这应该有用。
var text = "this is a question? this is some text.";
var split1 = text.split(/[.?]+/); // splits the text at "." and "?"
var split2 = text.split(/[?]+/); // splits the text at "?"
// if the first element in both arrays is the same, the first sentence is a question.
var result = (split1[0] == split2[0]) ? split1[0] : "n/a";
答案 2 :(得分:0)
根据美国英语语法规则,句子以.
,?
或!
结尾,但如果句子以引号结尾,则"
将跟随(他对我说,“你好吗?”)。这算是一个问题吗?句子本身是一个引用问题的陈述,所以我认为答案是否定的。这样可以更轻松,因为我们只需要考虑?
后面没有"
。
鉴于上述情况,这是我的解决方案:
function startIsQuestion( str ) {
var m = str.match(/^[^.!]+[?][^"]/);
if (!m ||
m[0].indexOf('.') >= 0 ||
m[0].indexOf('!') >= 0 ||
m[0].indexOf('?"') >= 0) return "n/a";
return m[0];
}
我认为它并不完全健壮,但我不确定你的完整要求,它应该给你一个良好的开端。